Ciao a tutti,
sto tentando di completare il login in un sito diverso da quello dove risiedono i miei script.
Ho tentato sia con la classe Snoopy che con le funzioni cURL ma il risultato non è cambiato (ho provato a replicare gli header che vengono generati dal browser) e il login fallisce.
Grazie.


Codice con Snoopy:
Codice PHP:
include "Snoopy.class.php";
$snoopy = new Snoopy;

$submit_url ='http://dominio/login.htm';
$snoopy->fetch($submit_url);
$snoopy->referer "http://dominio/login.htm";

$submit_url ='http://dominio/index_html';
$submit_vars["do_login"] = "1";
$submit_vars["user"] = "utente";
$submit_vars["password"] = "password";
$submit_vars["Submit"] = "::: Accedi :::"$snoopy->submit($submit_url,$submit_vars);

$snoopy->setcookies();
$submit_url ='http://dominio/invia.htm';
$snoopy->fetch($submit_url);
echo 
$snoopy->results

Codice con cURL:
Codice PHP:
class cURL {
    var 
$headers;
    var 
$user_agent;
    var 
$compression;
    var 
$cookie_file;
    var 
$proxy;
    function 
cURL($cookies=TRUE,$cookie='cookies.txt',$compression='gzip',
$proxy='') {
        
$this->headers[] = 'Accept: HTTP Accept=text/html,application/xhtml 
+xml,application/xml;q=0.9,*/*;q=0.8'
;
        
$this->headers[] = 'Accept-Language: it-it,it;q=0.8,en- us;q=0.5,en;q=0.3';
        
$this->headers[] = 'Accept-Encoding: gzip,deflate';
        
$this->headers[] = 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7';
        
$this->headers[] = 'Connection: Keep-Alive';
        
$this->headers[] = 'Content-type: application/x-www-form-urlencoded';
        
$this->headers[] = 'Referer: [url]http://dominio/login.htm[/url]' 
;
        
$this->user_agent 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)';
        
$this->compression=$compression;
        
$this->proxy=$proxy;
        
$this->cookies=$cookies;
        if (
$this->cookies == TRUE$this->cookie($cookie);
    }
    function 
cookie($cookie_file) {
        if (
file_exists($cookie_file)) {
            
$this->cookie_file=$cookie_file;
        } else {
            
fopen($cookie_file,'w') or $this->error('The cookie file could not be opened. Make sure this directory has the correct permissions');
            
$this->cookie_file=$cookie_file;
            
fclose($this->cookie_file);
        }
    }
    function 
get($url) {
        
$process curl_init($url);
        
curl_setopt($processCURLOPT_HTTPHEADER$this->headers);
        
curl_setopt($processCURLOPT_HEADER0);
        
curl_setopt($processCURLOPT_USERAGENT$this->user_agent);
        if (
$this->cookies == TRUEcurl_setopt($processCURLOPT_COOKIEFILE$this->cookie_file);
        if (
$this->cookies == TRUEcurl_setopt($processCURLOPT_COOKIEJAR$this->cookie_file);
        
curl_setopt($process,CURLOPT_ENCODING $this->compression);
        
curl_setopt($processCURLOPT_TIMEOUT30);
        if (
$this->proxycurl_setopt($cUrlCURLOPT_PROXY'proxy_ip:proxy_port');
        
curl_setopt($processCURLOPT_RETURNTRANSFER1);
        
curl_setopt($processCURLOPT_FOLLOWLOCATION1);
        
$return curl_exec($process);
        
curl_close($process);
        return 
$return;
    }
    function 
post($url,$data) {
        
$process curl_init($url);
        
curl_setopt($processCURLOPT_HTTPHEADER$this->headers);
        
curl_setopt($processCURLOPT_HEADER1);
        
curl_setopt($processCURLOPT_USERAGENT$this->user_agent);
        if (
$this->cookies == TRUEcurl_setopt($processCURLOPT_COOKIEFILE$this->cookie_file);
        if (
$this->cookies == TRUEcurl_setopt($processCURLOPT_COOKIEJAR$this->cookie_file);
        
curl_setopt($processCURLOPT_ENCODING $this->compression);
        
curl_setopt($processCURLOPT_TIMEOUT30);
        if (
$this->proxycurl_setopt($processCURLOPT_PROXY$this->proxy);
        
curl_setopt($processCURLOPT_POSTFIELDS$data);
        
curl_setopt($processCURLOPT_RETURNTRANSFER1);
        
curl_setopt($processCURLOPT_FOLLOWLOCATION1);
        
curl_setopt($processCURLOPT_POST1);        
        
$return curl_exec($process);
        
//var_dump(curl_getinfo($process,CURLINFO_HEADER_OUT));
        
curl_close($process);
        return 
$return;
    }
    function 
error($error) {
        echo 
"<center><div style='width:500px;border: 3px solid #FFEEFF;
padding: 3px; background-color: #FFDDFF;font-family: verdana; font-
size: 10px'>[b]cURL Error[/b]
$error</div></center>";
        die;
    }
}
$cc = new cURL();
$cc->get('http://dominio/login.htm');
echo 
$cc->post('http://dominio/index_html','do_login=1&user=utente&password=pwd&Submit=%3A%3A%3A+Accedi+%3A%3A%3A')

il sito in questione è stato realizzato con Zope in python

grassie