Buen dia, solicito su ayuda en un problema que me tiene desvelado hace semanas...
se trata de lo siguiente.
Paso 1: Curl va a un sitio web recoge los primeros datos que necesito. Ningun problema.
Paso2: Al visitar la primera pagina que funciona con .NET genera unos valores EventValidation y ViewState que necesito pasarlos a la segunda pagina tal cuales, para mantener esa sesion activa.
Ahi radica el problema. ¿Como puedo hacer una consulta Curl, validar datos y volver a enviar datos POST sin que se altere la session de la primera pagina... no se si me entienden.
Pongo un ej, de lo que tengo
Código PHP:
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiefile");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiefile");
curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL, 'http://www.pagina1.com');
$result1 = curl_exec($ch);
$Textohtml= $result1;
# *** Parsear el html para extraer el texto del Capcha ****
$Paso1 = explode("\r", $Textohtml);
$Preresult = explode("/", $Paso1[95]);
$TextoCapcha= substr($Preresult[1], 0,6);
echo $TextoCapcha;
# ***** OBTENER EL EVENT VALIDATION STRING *********
$Preresult = explode("\"", $Paso1[19]);
$EventValidation= $Preresult[7];
// echo $EventValidation;
# ***************************************************
# ********* OBTENER EL VIEW STATE STRING ************
$Preresult = explode("\"", $Paso1[10]);
$ViewState= $Preresult[7];
// echo $ViewState;
# ***************************************************
# ********** HACER EL ENVIO DE LOS DATOS POR POST **********************
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "txtcampo1=123456789&captcha=".$TextoCapcha."&__EVENTTARGET=''&__EVENTARGUMENT=''&__VIEWSTATE=".$ViewState."&__EVENTVALIDATION=".$EventValidation."&Button1=Continuar");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiefile");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiefile");
curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
curl_setopt($ch, CURLOPT_URL, 'http://www.pagina2.com');
echo curl_exec($ch);
curl_close($ch);
El resultado que me da es un error de Cookies pero las mismas las establece la segunda pagina cuando todo es correcto, esto ya lo he verificado en el navegador. Por si acaso ya tambien revise por permisos en la carpeta de las cookies y estan 777 en la carpeta donde hago las pruebas.
Alguna idea de como lograr lo que quiero... ????