web log-in sonra sadece erişilebilir url file_get_contents

1 Cevap php

Ben bir web sitesinden bir sayfa yakalayabilir bir php komut dosyası yapmak istiyorum. Think * file_get_contents ($ url) *.

Ancak, bu web sitesi herhangi bir sayfaya erişmek için önce log-in formu bir kullanıcı adı / parola doldurmak gerektirir. Ben bir kez giriş yapmış, web tarayıcınız bir kimlik doğrulama tanımlama gönderir ve her sonuçta tarayıcı isteği ile, oturum bilgi erişimi kimlik doğrulaması için geri web sitesine geçirilir düşünün.

Ben erişmek ve bu web sitesinden bir sayfa yakalamak için bir php script ile tarayıcınızın bu davranışını taklit nasıl bilmek istiyorum.

Daha spesifik olarak, benim sorular şunlardır:

  1. How do I send a request that contains my log-in details so that the website replies with the session information/cookie
  2. How do i read the session information/cookie
  3. How do i pass back this session information with every consequent request (*file_get_contents*, curl) to the website.

Teşekkürler.

1 Cevap

Curl oldukça iyi yapmak için uygundur. Sen CURLOPT_COOKIEJAR ve CURLOPT_COOKIEFILE seçeneklerini ayarlamak dışında özel başka bir şey yapmanız gerekmez. Eğer çerez kaydedilir sitesinden form alanlarını geçen ve aşağıdaki örnekte gösterildiği gibi Curl otomatik olarak sonraki istekler için aynı çerez kullanacak tarafından giriş yaptıktan sonra.

Aşağıdaki fonksiyonu yani dizin / dosya var ve yazılabilir olduğundan emin olun 'çerezler / cookie.txt' için çerezleri kaydeder unutmayın.

$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;
}