Foros del Web » Programando para Internet » PHP »

ayu. mantener la sesion de curl

Estas en el tema de ayu. mantener la sesion de curl en el foro de PHP en Foros del Web. hola tengo un scrip con curl ejecutando desde un local host que realiza un login Código: $url = "http://web/login"; $elements = "u_name=xxxxx&p_word=xxx"; $handler = curl_init(); ...
  #1 (permalink)  
Antiguo 03/06/2010, 12:19
 
Fecha de Ingreso: febrero-2010
Mensajes: 44
Antigüedad: 14 años, 1 mes
Puntos: 0
ayu. mantener la sesion de curl

hola tengo un scrip con curl ejecutando desde un local host que realiza un login


Código:
$url = "http://web/login";
$elements = "u_name=xxxxx&p_word=xxx";

$handler = curl_init();
$cookie_file = tempnam ("/tmp", "CURLCOOKIE"); 
curl_setopt($handler, CURLOPT_HEADER, 1); 
curl_setopt($handler, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($handler, CURLOPT_URL, $url);
curl_setopt($handler, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($handler, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($handler, CURLOPT_POST,true);
curl_setopt($handler, CURLOPT_POSTFIELDS, $elements);
$response = curl_exec ($handler);
curl_close($handler);
el problema es que cuando se ejecuta desde el local host esta logueado pero si cambio de pagina, la sesion muere...

osea yo querria que se loguee desde un script que esjecuta desde el localhost pero cuando accedo desde el browser normalmente mantenga la sesion

calculo que debe ser por las cookies peor no se como manejarlas
  #2 (permalink)  
Antiguo 03/06/2010, 14:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: ayu. mantener la sesion de curl

Solo tienes que pasar la ruta de donde estas grabando los cookies. Crea un directorio y almacena los cookies en ese directorio.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 03/06/2010, 15:05
 
Fecha de Ingreso: febrero-2010
Mensajes: 44
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: ayu. mantener la sesion de curl

Cita:
Iniciado por abimaelrc Ver Mensaje
Solo tienes que pasar la ruta de donde estas grabando los cookies. Crea un directorio y almacena los cookies en ese directorio.
y como se cual es la ruta??

a ver si comprendi...

la ruta donde guarda los cookies local host tiene que ser igual a la del navegador
como lo soluciono??
  #4 (permalink)  
Antiguo 03/06/2010, 15:10
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: ayu. mantener la sesion de curl

No, en primer lugar tiene que existir un directorio, que es donde cURL se encargará de almacenar las cookies. Si no existe, debes crearlo. Es la que indicaste en el cookiejar. Te recomiendo que mejor escribas una ruta absoluta, ejemplo con window c:/directorio/tmp o linux /usr/directorio/tmp
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 03/06/2010, 17:50
 
Fecha de Ingreso: febrero-2010
Mensajes: 44
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: ayu. mantener la sesion de curl

Cita:
Iniciado por abimaelrc Ver Mensaje
No, en primer lugar tiene que existir un directorio, que es donde cURL se encargará de almacenar las cookies. Si no existe, debes crearlo. Es la que indicaste en el cookiejar. Te recomiendo que mejor escribas una ruta absoluta, ejemplo con window c:/directorio/tmp o linux /usr/directorio/tmp

ahora cree la carpeta c:\tempcurl

hice esto

$handler = curl_init();
curl_setopt($handler, CURLOPT_HEADER, 1);
curl_setopt($handler, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($handler, CURLOPT_URL, $url);
curl_setopt($handler, CURLOPT_COOKIEFILE, "C:\tempcurl");
curl_setopt($handler, CURLOPT_COOKIEJAR, "C:\tempcurl");
curl_setopt($handler, CURLOPT_POST,true);
curl_setopt($handler, CURLOPT_POSTFIELDS, $elements);
$response = curl_exec ($handler);
curl_close($handler);

pero en esa carpeta no me guarda nada.!! y cuando accedo a otro link se cierra la sesion
  #6 (permalink)  
Antiguo 03/06/2010, 18:15
 
Fecha de Ingreso: febrero-2010
Mensajes: 44
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: ayu. mantener la sesion de curl

pude lograr que se mantenga la sesion dentro del localhost con esto

curl_setopt($handler, CURLOPT_COOKIEFILE, "c:\\cookies.txt");
curl_setopt($handler, CURLOPT_COOKIEJAR, "c:\\cookies.txt");

pero cuando salgo del local host muere la sesion osea hago click en algun link de la misma web que salga del local host
  #7 (permalink)  
Antiguo 03/06/2010, 19:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: ayu. mantener la sesion de curl

Para que tengas una idea mejor, crea este ejemplo y mira la información que te brinda

a.php
Código PHP:
Ver original
  1. <?php
  2. function set_cookie($string){
  3.     $cookiearr = array();
  4.     $cookie = '';
  5.     preg_match('/Set-Cookie: .+;/i',$string,$m);
  6.     $cookiestr = trim(substr($m[0], 11, -1));
  7.     $eC = explode(';', $cookiestr);
  8.     $eC = explode('=', $eC[0]);
  9.     $cookiename = trim(array_shift($eC));
  10.     $cookiearr[$cookiename] = trim(implode('=', $eC));
  11.  
  12.     foreach ($cookiearr as $key=>$value){
  13.         $cookie .= "&$key=$value";
  14.     }
  15.  
  16.     return $cookie;
  17. }
  18.  
  19. if(empty($_GET['url'])){
  20.     $url = 'http://localhost/b.php';
  21.     $c = curl_init();
  22.     curl_setopt($c, CURLOPT_URL, $url);
  23.     curl_setopt($c, CURLOPT_HEADER, true);
  24.     curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  25.     curl_setopt($c, CURLOPT_NOBODY, true);
  26.  
  27.     $page = curl_exec($c);
  28.     curl_close($c);
  29.     echo '<a href="a.php?url=c.php' . set_cookie($page) . '">enlace</a>';
  30. }
  31. else{
  32.     $url = 'http://localhost/' . $_GET['url'];
  33.     $cookie = 'PHPSESSID=' . $_GET['PHPSESSID'] . '; ';
  34.     $c = curl_init();
  35.     curl_setopt($c, CURLOPT_URL, $url);
  36.     curl_setopt($c, CURLOPT_COOKIE, $cookie);
  37.     curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  38.  
  39.     $page = curl_exec($c);
  40.     curl_close($c);
  41.     echo $page;
  42. }

b.php
Código PHP:
Ver original
  1. <?php
  2. $_SESSION['foo'] = 'bar';

c.php
Código PHP:
Ver original
  1. <?php
  2. echo $_SESSION['foo'];
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: curl, mantener
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 22:53.