Foros del Web » Programando para Internet » PHP »

CURL y propagar sesión en la llamada

Estas en el tema de CURL y propagar sesión en la llamada en el foro de PHP en Foros del Web. Hola de nuevo foreros! Tengo un nuevo problema, quiero realizar una ejecución remota de un script vía HTTP, y para ello uso las funcioner CURL. ...
  #1 (permalink)  
Antiguo 17/03/2011, 11:40
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 20 años, 8 meses
Puntos: 1
Pregunta CURL y propagar sesión en la llamada

Hola de nuevo foreros!

Tengo un nuevo problema, quiero realizar una ejecución remota de un script vía HTTP, y para ello uso las funcioner CURL. Todo está dentro del mismo sitio web.

El problema es que no consigo mantener la utenticación / login, basada en sesiones en el script que llamo. Voy a explicar como lo estoy haciendo para que podáis ayudarme.

1. El scrip que genera la llamada. Realiza una autenticación típica de usuario y contraseña, y seteamos las variables de sesión.
También realiza la llamada usando CIRL. Puede verse que en la llamada CURL propago el token de sesión para recuperarla en el script al que llamo

SCRIPT QUE LLAMA:
Código PHP:

session_start
();
$_SESSION['username'] = $admin['username'];
$_SESSION['password'] = $admin['password'];

$ch curl_init();
$params session_name().'='.session_id();
// Se establece la URL y algunas opciones
curl_setopt ($chCURLOPT_URLMi_url);
curl_setopt ($chCURLOPT_POSTtrue);
curl_setopt ($chCURLOPT_POSTFIELDS$params);
curl_setopt ($chCURLOPT_RETURNTRANSFERtrue);
$content curl_exec ($ch);
// Se cierra el recurso CURL y se liberan los recursos del sistema
curl_close($ch);
echo(
'resultado: '.$content); 
2. El script que es llamado y que antes de realizar sus funciones realiza un login, pues el sitio en cuestión tiene autenticación de usuarios.
Este es el script que recibe la llamada:

Código PHP:
// arrancamos la sesión con el id comunicado en la llamada para recrear correctamente los valores
session_start($_POST['PHPSID']);
// Validamos el login. Y aquí es donde tenemos el fallo. NO SE RECREA LA SESION

if( !isset($_SESSION['username']) || !isset($_SESSION['password']) ) {
    
// El problema es que siempre entra aqui
   
echo (NO LAGADO!!!);

Por supuesto, sin usar curl, con el navegador, el sistema de sesiones funciona correctamente en el sitio.

¿cómo conseguir recrear o propagar la sesión?
Gracias y un saludo.
  #2 (permalink)  
Antiguo 21/03/2011, 08:15
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: CURL y propagar sesión en la llamada

¡Ya lo encontré! Por si alguien tiene este mismo problema:

En principio el planteamiento es correcto, pero,
Ocurre que el sistema parece que no permite tener dos script simultáneos con la misma sesión en proceso. En este caso se da este particular.

Simplemente lo he solucionado añadiendo 'session_commit' antes de realizar la llamada al script remoto. De esta manera:

Código PHP:
session_start(); 
$_SESSION['username'] = $admin['username']; 
$_SESSION['password'] = $admin['password']; 

// ESTO TERMINA EL MANEJO DE LA SESION Y SOLUCIONA EL PROBLEMA
session_commit();
$ch curl_init(); 
$params session_name().'='.session_id(); 
// Se establece la URL y algunas opciones 
curl_setopt ($chCURLOPT_URLMi_url); 
curl_setopt ($chCURLOPT_POSTtrue); 
curl_setopt ($chCURLOPT_POSTFIELDS$params); 
curl_setopt ($chCURLOPT_RETURNTRANSFERtrue); 
$content curl_exec ($ch); 
// Se cierra el recurso CURL y se liberan los recursos del sistema 
curl_close($ch); 
echo(
'resultado: '.$content); 
Espero esto ayude.
Saludos!

Etiquetas: curl, llamada, propagar, sesión
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:06.