2012-06-08 40 views
2

我想創建一個「遠程登錄」的網站,但是當我嘗試下面的代碼,我得到的cookie被禁用的錯誤,我GOOGLE了一個解決方案,但只解決了案件有cURL的做法(餅乾罐),我怎麼能解決餅乾問題?我怎麼能找到該網站需要的cookie(它大約有10個)?PHP的fsockopen()餅乾

<?php 
$vars = array(
    'email' => "*****", 
    'pass'=>"*****" 
    ); 
$content = http_build_query($vars); 

$host = 'www.site.com'; 
$service_uri = '/login.php'; 
$vars ='login_mode=1'; 

$header = "Host: $host\r\n"; 
$header .= "User-Agent: PHP Script\r\n"; 
$header .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$header .= "Referer: http://www.site.com \r\n"; 
$header .= "Content-Length: ".strlen($content)."\r\n"; 
$header .= "Connection: close\r\n\r\n"; 

$fp = fsockopen("".$host,80, $errno, $errstr); 

if (!$fp) 
{ 
    echo "$errstr ($errno)<br/>\n"; 
    echo $fp; 
} 
else 
{ 
    fputs($fp, "POST $service_uri HTTP/1.1\r\n"); 
    fputs($fp, $header.$content); 

    while(!feof($fp)) 
    { 
     echo fgets($fp, 128); 
    } 
    fclose($fp); 
} 
?> 
+0

動態,這根本不是真的。很容易自己讀取HTTP頭並手動處理這些cookie。 –

+1

正想說你可以解析「設置Cookie:」頭在 – ku6pk

+0

是的,我見過的Set-Cookie,但我不知道哪個使用網站是... – user1126068

回答

3

您首先必須請求主頁URL,它會爲您提供cookie標頭。解析它們並將它們添加到您的$header變量中,並將它們發送到服務器。

你不想關心其Cookie的網站需要 - 只是給所有的人,這使得它面向未來。

如果你不想這樣做,所有你自己,看看PEAR的HTTP_Request2包 - 它有cookie處理內置。