Foros del Web » Programando para Internet » PHP »

Problema con PHP, cURL y cookies. No puedo hacer una segunda llamada.

Estas en el tema de Problema con PHP, cURL y cookies. No puedo hacer una segunda llamada. en el foro de PHP en Foros del Web. Hola gente, estoy teniendo un problema con PHP y cURL. Necesito loguearme en Facebook, y desde ahi, ir a otra pagina de mi perfil. El ...
  #1 (permalink)  
Antiguo 28/08/2010, 14:22
 
Fecha de Ingreso: junio-2009
Mensajes: 34
Antigüedad: 11 años, 11 meses
Puntos: 0
Problema con PHP, cURL y cookies. No puedo hacer una segunda llamada.

Hola gente, estoy teniendo un problema con PHP y cURL.

Necesito loguearme en Facebook, y desde ahi, ir a otra pagina de mi perfil. El problema es que cuando quiero ir a esa otra pagina, me dice que necesito estar logueado para verla; sin embargo, estoy usando COOKIEJAR y COOKIEFILE.

Este es mi codigo:

$login_email = "myusername";
$login_pass = "mypassword";
$cookies = getcwd() . "/cookies.txt";
$otherPage = "my profile url";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://login.facebook.com/login.php');
curl_setopt($curl, CURLOPT_POSTFIELDS, 'email=' . urlencode($login_email) . '&pass=' . urlencode($login_pass) . '&login=' . urlencode("Log in"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookies);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookies);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12");
echo curl_exec($curl);
curl_close($curl);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $otherPage);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookies);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookies);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
echo curl_exec($curl);

Cuando el primer "echo" es ejecutado, veo mi muro perfectamente, pero el problema viene cuando se ejecuta el segundo "echo".

Que puedo hacer?

Saludos y gracias de antemano.
  #2 (permalink)  
Antiguo 28/08/2010, 15:24
Avatar de JBalde  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 118
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Problema con PHP, cURL y cookies. No puedo hacer una segunda llamada.

Echale un ojo a cookies.txt, mira a ver si se esta escribiendo contenido en el, lo mismo no tienes permisos de escritura y no se estan guardando los datos de la cookie.
  #3 (permalink)  
Antiguo 28/08/2010, 15:29
 
Fecha de Ingreso: junio-2009
Mensajes: 34
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Problema con PHP, cURL y cookies. No puedo hacer una segunda llamada.

Cita:
Iniciado por JBalde Ver Mensaje
Echale un ojo a cookies.txt, mira a ver si se esta escribiendo contenido en el, lo mismo no tienes permisos de escritura y no se estan guardando los datos de la cookie.
Ya lo he chequeado y los datos se escriben correctamente.
  #4 (permalink)  
Antiguo 28/08/2010, 15:35
Avatar de JBalde  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 118
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Problema con PHP, cURL y cookies. No puedo hacer una segunda llamada.

Como idea, prueba a quitar el segundo curl_init, para ver si mantiene la sesion
  #5 (permalink)  
Antiguo 28/08/2010, 16:33
 
Fecha de Ingreso: junio-2009
Mensajes: 34
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Problema con PHP, cURL y cookies. No puedo hacer una segunda llamada.

Cita:
Iniciado por JBalde Ver Mensaje
Como idea, prueba a quitar el segundo curl_init, para ver si mantiene la sesion
Lo he probado con 1 y con 2 curl_init() pero es lo mismo.
  #6 (permalink)  
Antiguo 28/08/2010, 16:43
Avatar de JBalde  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 118
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Problema con PHP, cURL y cookies. No puedo hacer una segunda llamada.

Has probado a quitar el curl_close y no llamarlo hasta despues de la segunda llamada?
  #7 (permalink)  
Antiguo 28/08/2010, 18:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 12 años
Puntos: 1517
Respuesta: Problema con PHP, cURL y cookies. No puedo hacer una segunda llamada.

Se supone que funcione correctamente como lo estás indicando. Pero para que tengas una mejor idea de lo que puedes hacer:
a.php
Código PHP:
Ver original
  1. <?php
  2. $ch = curl_init();
  3. curl_setopt($ch, CURLOPT_URL, 'http://localhost/b.php');
  4. curl_setopt($ch, CURLOPT_POST, true);
  5. curl_setopt($ch, CURLOPT_POSTFIELDS, 'foo=bar&baz=candy');
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  7. curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd() . '/cookie.txt');
  8. curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd() . '/cookie.txt');
  9. $page = curl_exec($ch);
  10.  
  11. echo '<pre>';
  12. var_dump($page);
  13. echo '</pre>';
  14.  
  15.  
  16. $ch = curl_init();
  17. curl_setopt($ch, CURLOPT_URL, 'http://localhost/c.php');
  18. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  19. curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd() . '/cookie.txt');
  20. curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd() . '/cookie.txt');
  21. $page = curl_exec($ch);
  22.  
  23. echo '<pre>';
  24. var_dump($page);
  25. echo '</pre>';
  26.  
  27.  
  28. $ch = curl_init();
  29. curl_setopt($ch, CURLOPT_URL, 'http://localhost/c.php');
  30. curl_setopt($ch, CURLOPT_COOKIE, 'foo=vegetable; baz=fuits');
  31. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  32. $page = curl_exec($ch);
  33.  
  34. echo '<pre>';
  35. var_dump($page);
  36. echo '</pre>';

b.php
Código PHP:
Ver original
  1. <?php
  2. setcookie('foo', $_POST['foo']);
  3. setcookie('baz', $_POST['baz']);
  4.  
  5. var_dump($_POST);

c.php
Código PHP:
Ver original
  1. <?php
  2. var_dump($_COOKIE);

Resultado
Código HTML:
Ver original
  1. string(13) "array(0) {
  2. }
  3. "
  4.  
  5. string(75) "array(2) {
  6.   ["baz"]=>
  7.   string(5) "candy"
  8.   ["foo"]=>
  9.   string(3) "bar"
  10. }
  11. "
  12.  
  13. string(81) "array(2) {
  14.   ["foo"]=>
  15.   string(9) "vegetable"
  16.   ["baz"]=>
  17.   string(5) "fuits"
  18. }
  19. "

Resultado en cookie.txt
Código txt:
Ver original
  1. # Netscape HTTP Cookie File
  2. # http://curl.haxx.se/rfc/cookie_spec.html
  3. # This file was generated by libcurl! Edit at your own risk.
  4.  
  5. localhost   FALSE   /   FALSE   0   foo bar
  6. localhost   FALSE   /   FALSE   0   baz candy

Si te fijas, puedes enviar directamente las cookies con CURLOPT_COOKIE. En el área de aportes hay un tema que da más ejemplos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: cookies, curl, llamada
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:18.