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 ($ch, CURLOPT_URL, Mi_url);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$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.