Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012

    Login in un altro sito via Php

    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
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    up
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Scusate se vi sembro deficiente, ma cosa intendete quando scrivete "UP" ?
    Admin su: www.braviautori.it

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012


    up è una pratica accettata dagli amministratori del forum per far tornare nelle prime posizioni un posto che sennò finirebbe nel dimenticatoio, allo scopo di renderlo evidente e ottenere una risposta


    ad ogni modo ho risolto, era il Content-length errato e quindi non effettuava correttamente il login
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    Ah ecco, non capivo. Grazie!

    PS: UP! :-)
    Admin su: www.braviautori.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.