Foros del Web » Programando para Internet » PHP »

cURL ayuda

Estas en el tema de cURL ayuda en el foro de PHP en Foros del Web. Estoy creando un script en PHP con cURL que hace 1.-Entra a un blog. 2.-Se logea. 3.-Postea un tema. Problemas? como hacer para una vez ...
  #1 (permalink)  
Antiguo 15/03/2011, 11:17
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
cURL ayuda

Estoy creando un script en PHP con cURL que hace
1.-Entra a un blog.
2.-Se logea.
3.-Postea un tema.

Problemas? como hacer para una vez logeado coger esa sesion que se crea y utilizarla en la siguiente peticion por POST.

Como hacer el seguimiento de lo que pasa? Ver la respuesta, el codigo fuente devuelto, no se, ver algo! xD

Gracias...
  #2 (permalink)  
Antiguo 15/03/2011, 11:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: cURL ayuda

Establece la propiedad de cURL del cookie jar, con esa las cookies se almacenan y la sesión se mantiene activa.

En los aportes del foro tienes un manual de como usar cURL para hacer peticiones http.

Saludos.
  #3 (permalink)  
Antiguo 15/03/2011, 17:05
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
Respuesta: cURL ayuda

Con aportes te refieres a la wiki, verdad?
Tengo dos codigos de momento:
Código PHP:
Ver original
  1. $url = 'http://www.web.com/logearse.php';
  2. $dat = 'user=usuario&key=pass';
  3. $c = curl_init($url);
  4. curl_setopt($c, CURLOPT_POST, true);
  5. curl_setopt($c, CURLOPT_POSTFIELDS, $dat);
  6. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  7. $page = curl_exec($c);
Esto crea una cookie o session en el navegador.
Para poder realizar la siguiente peticion, hay que tener esas cookies.

Esto es lo que no encuentro ¿como recogo esa cookie?

Muchas gracias
  #4 (permalink)  
Antiguo 15/03/2011, 21:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: cURL ayuda

Aportes y Sistemas en PHP -> [APORTE] file_get_contents(), cURL, HTTP_Request
  #5 (permalink)  
Antiguo 16/03/2011, 09:46
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
recoger cookies cURL

Gracias, es el de wiki pero mas completo

Ya se como enviar cookies, pero como recogerlas, esa es mi cuestion ahora.
  #6 (permalink)  
Antiguo 16/03/2011, 11:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: cURL ayuda

Como te comente tienes que establecer la opción del COOKIE_JAR para eso para que se almacenen ahí las cookies, si lo quieres hacer manual, puedes leer los headers, siempre empiezan por la palabra COOKIE.

Saludos.
  #7 (permalink)  
Antiguo 16/03/2011, 13:26
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
Respuesta: cURL ayuda

Código PHP:
Ver original
  1. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
  2.     curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
De acuerdo, era esto lo que estaba buscando, nose la diferencia ni para que sirven, pero voy a investigar.
Gracias

Para terminar tengo una duda basica: une vez hecha la llamada y ejecutado el script, como hago para recibir la respuesta http o ver el codigo fuente.
Deduje que seria un echo $page (en relacion al script del mensaje anterior), pero no me muestra nada de nada.
  #8 (permalink)  
Antiguo 16/03/2011, 15:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: cURL ayuda

Con un echo $page debería de servir, si no te da nada, es porque la respuesta no te esta dando nada la respuesta http.

Saludos.
  #9 (permalink)  
Antiguo 16/03/2011, 16:39
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
Respuesta: cURL ayuda

Código PHP:
Ver original
  1. $url = 'http://www.google.com/';
  2. $c = curl_init($url);
  3. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  4. $page = curl_exec($c);
  5.  
  6. echo $page;
Esto, por ejemplo, no muestra nada... no lo entiendo...
  #10 (permalink)  
Antiguo 16/03/2011, 16:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: cURL ayuda

Prueba echo htmlentities($page);

Saludos.
  #11 (permalink)  
Antiguo 17/03/2011, 10:46
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
Respuesta: cURL ayuda

Código PHP:
Ver original
  1. <?php
  2. $url = 'http://www.google.com/';
  3. $ch = curl_init($url);
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  5. $page = curl_exec($ch);
  6.  
  7. $a = curl_getinfo($ch);
  8. print_r ($a);
  9.  
  10.  
  11. echo $page;
  12. ?>

Ese es mi script, y lo unico que me devuelve es esto:
Cita:
Array ( [url] => http://www.google.com/ [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0 [namelookup_time] => 0.044493 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => 0 [upload_content_length] => 0 [starttransfer_time] => 0 [redirect_time] => 0 )
No sale nada mas, no se si el fallo es del codigo cURL, o de que?
Que es lo que me deberia mostrar, la pagina, no? el codigo fuente? las cabeceras HTML.

Estoy muy perdido, gracias por la ayuda.
Un saludo
  #12 (permalink)  
Antiguo 17/03/2011, 12:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: cURL ayuda

Si estas detrás de un proxy, tienes que configurar el proxy usando la opción de CURLOPT_PROXY, ya que inicialmente me daba el mismo error que a ti, pero activando el proxy:
Código PHP:
Ver original
  1. <?php
  2. $url = 'http://www.google.com/';
  3. $ch = curl_init($url);
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  5. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  6. curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
  7. curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
  8. curl_setopt($ch, CURLOPT_PROXY, 'ip:port');
  9. $page = curl_exec($ch);
  10.  
  11. $a = curl_getinfo($ch);
  12. print_r ($a);
  13.  
  14.  
  15. echo $page;

Me sirvio correctamente.

Saludos.
  #13 (permalink)  
Antiguo 17/03/2011, 17:17
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
Respuesta: cURL ayuda

Problemo: es un sevidor gratuito (estoy haciendo un pequeño script para crear un tema nuevo en mi foro cada hora con informacion que me bajo de otra pagina) y no se cual es la ip ni el puerto. Sabes como lo puedo saber?

Muchisimas gracias por la ayuda que me estas prestando
  #14 (permalink)  
Antiguo 17/03/2011, 23:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: cURL ayuda

El proxy debe de ser un proxy de salida para que te funcione, ese lo tienes que conseguir tu por tu cuenta, no es la del mismo server ya que tu mismo server esta bloqueando las conexiones de salida, es por eso que debes de especificar un proxy distinto (el cual puede ser gratuito o de paga).

Saludos.
  #15 (permalink)  
Antiguo 18/03/2011, 18:59
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
Respuesta: cURL ayuda

Vale, muchas gracias

Etiquetas: curl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:11.