Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/03/2011, 11:40
bauhaus1975
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 21 años, 4 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.