Il mio problema e' il seguente (mi hanno chiesto di risolverlo):
devo simulare con Curl il passaggio (e quindi la ricezione dei dati inviati dal server)
dalla pagina
http://www1.agenziaentrate.it/servizi/tassazioneattigiudiziari/registrazione.htm?passo=0
(si seleziona "Ufficio Finanziario" a ABBIATEGRASSO e cliccando su Avanti ) a
http://www1.agenziaentrate.it/servizi/tassazioneattigiudiziari/registrazione.htm?passo=1 (dopo aver cliccato per l'appunto AVANTI dalla pagina precedente).
Non sono riuscito a simulare questo passaggio,ho provato di tutto,dalla fsockopen tradizionale a $Snoopy fino a Curl.
Ecco il codice php dell'ultimo test fatto con Curl,se qualcuno riesce a capire il problema...
Ad ogni modo,credo che sia quasi impossibile simulare il passaggio con il curl del php,perche' quello che ricevo e' sempre l'html della pagina
http://www1.agenziaentrate.it/servizi/tassazioneattigiudiziari/registrazione.htm?passo=0 e mai quello della pagina
http://www1.agenziaentrate.it/servizi/tassazioneattigiudiziari/registrazione.htm?passo=1
che contiene i dati che mi interessano per l'ufficio finanziario ABBIATEGRASSO (ossia,quelli della pagina
http://www1.agenziaentrate.it/servizi/tassazioneattigiudiziari/registrazione.htm?passo=1
che contiene i codici dell "Ente emittente").
<?php
session_start();
if (isset($_COOKIE[session_name()]))
{
setcookie(session_name(), '', time()-42000, '/');
}
setcookie("cookie.txt","miocookie");
define('POSTURL', '
http://www1.agenziaentrate.it/servizi/tassazioneattigiudiziari/registrazione.htm');
define('POSTURL2', '
http://www1.agenziaentrate.it/servizi/tassazioneattigiudiziari/registrazione.htm?action=scegliufficio');
define('POSTURL3', '
http://www1.agenziaentrate.it/servizi/tassazioneattigiudiziari/registrazione.htm?passo=1');
define('POSTURL4', '
http://www1.agenziaentrate.it/servizi/tassazioneattigiudiziari/registrazione.htm?passo=0');
//define('POSTVARS', 'avanti=Avanti'); // POST VARIABLES TO BE SENT (non visualizza nulla)
//define('POSTVARS', 'avanti=ABBIATEGRASSO'); // POST VARIABLES TO BE SENT (non visualizza nulla)
define('POSTVARS2', 'avanti=Avanti&ufficio=C555'); // visualizza sempre la pagina di passo=0
//echo ("test postvars=".POSTVARS);
//die;
// INITIALIZE ALL VARS
$ch='';
$Rec_Data='';
$ch2='';
$Rec_Data2='';
$ch = curl_init(POSTURL4);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 0);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 0);
curl_setopt($ch, CURLOPT_POST ,1);
curl_setopt($ch, CURLOPT_POSTFIELDS ,POSTVARS2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1);
curl_setopt($ch, CURLOPT_HEADER ,1); // DO NOT RETURN HTTP HEADERS
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); // RETURN THE CONTENTS OF THE CALL
$Rec_Data = curl_exec($ch);
echo ("dopo la richiesta 3 .....".$Rec_Data);
// $Rec_Data = curl_exec($ch);
$testo = "PHPSESSID";
$pos = strripos($Rec_Data, $testo);
if ($pos === false)
{ //echo ("stringa PHPSESSID non trovata");
}
else
{ //echo ("stringa PHPSESSID trovata alla posizione numero".$pos);
$sessione=after($testo, $Rec_Data);
//echo (" valore trovato=".$valore);
define ('POSTVARS', 'PHPSESSID='.$sessione.'&ufficio=C55&avanti=Avanti');
echo ("POSTVARS=".POSTVARS);
$ch2 = curl_init(POSTURL3);
curl_setopt($ch2, CURLOPT_FORBID_REUSE, 0);
curl_setopt($ch2, CURLOPT_FRESH_CONNECT, 0);
curl_setopt($ch2, CURLOPT_POST ,1);
curl_setopt($ch2, CURLOPT_POSTFIELDS ,POSTVARS);
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION ,1);
curl_setopt($ch2, CURLOPT_HEADER ,1); // DO NOT RETURN HTTP HEADERS
curl_setopt($ch2, CURLOPT_AUTOREFERER, true);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER ,1); // RETURN THE CONTENTS OF THE CALL
$Rec_Data2 = curl_exec($ch).curl_exec($ch2);
$Rec_Data2 = str_replace('<option value=""></option>',' ',$Rec_Data2);
// $sessione=after($testo, $Rec_Data);
curl_setopt($ch2, CURLOPT_POSTFIELDS , $Rec_Data2);
$Rec_Data3 = curl_exec($ch2);
echo ("dopo exec".$Rec_Data3);
};
//echo ("dopo la richiesta 3 .....".$Rec_Data);
curl_close($ch);
curl_close($ch2);
session_destroy();
function after ($this, $inthat)
{
if (!is_bool(strripos($inthat, $this)))
return substr($inthat, strripos($inthat,$this)+strlen($this));
};
?>