file_get_contents e pagine con login

  • Creatore Discussione Creatore Discussione Fxxxx
  • Data di inizio Data di inizio

Fxxxx

Utente Attivo
17 Set 2011
63
0
0
Salve

io vorrei utilizzare questa funzione file_get_contents() per "recuperare" una certa pagina internet (non sul mio server) ma vorrei che fosse quella che visualizzo dal mio browser dopo aver effettuato il login, cioè voglio che venga preservata la sessione creata con il mio login

Qualcuno sa come dovrei fare?

Grazie
 
Premetto che questo metodo funzionerà solo per alcuni dei siti che utilizzano i cookies per ricordare i dati di login.
Detto questo, puoi usare il seguente codice:
PHP:
$headers = array('http' => array('header'=> 'Cookie: ' . $_SERVER['HTTP_COOKIE']."\r\n"));
$cookies = stream_context_create($headers);
$file = file_get_contents('http://sito', false, $cookies);
 
Intendi quei siti che salvano nei cookie sia l'username che la password?

E per quelli che nei cookie salvano solo l'ID di sessione?

C'è soluzione?
 
Ho risolto con questo pezzo di codice trovato altrove su internet (stackoverflow.com utente: cOle2):

PHP:
$loginUrl = 'http://example.com/login'; //action from the login form
$loginFields = array('username'=>'user', 'password'=>'pass'); //login form field names and values
$remotePageUrl = 'http://example.com/remotepage.html'; //url of the page you want to save  

$login = getUrl($loginUrl, 'post', $loginFields); //login to the site

$remotePage = getUrl($remotePageUrl); //get the remote page

function getUrl($url, $method='', $vars='') {
    $ch = curl_init();
    if ($method == 'post') {
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies/cookies.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies/cookies.txt');
    $buffer = curl_exec($ch);
    curl_close($ch);
    return $buffer;
}

Tengo a specificare che "http://example.com/login" è l'indirizzo dove punta il form di login e non il link dove c'è il login, cosa che potrebbe essere facilmente confusa
 

Discussioni simili