2014-02-06 38 views
0

我寫了以前的成功處理登錄/密碼腳本的curl腳本。但是我面對的是我無法打破的一個。這裏是我的代碼:使用特殊登錄表單的CURL

<? 
$login_email = "xxxx" ; 
$login_pass = "xxx" ; 
$cookie_file_path = "cookie3.txt"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://89.31.145.108/athezza/index.php?php_action=IDENTIFICATION_form&type_ident=b2b'); 
curl_setopt($ch, CURLOPT_POSTFIELDS,'login='.urlencode($login_email).'&password='.urlencode($login_pass).'&php_action=IDENTIFICATION_login&type_ident=b2b'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); 
curl_setopt($ch, CURLOPT_REFERER, "http://89.31.145.108/athezza/"); 
$page = curl_exec($ch); 

var_dump($page); 
?> 

和頁面如下:

http://89.31.145.108/athezza/index.php?php_action=IDENTIFICATION_form&type_ident=b2b 

不知怎的,我不能管理髮送足夠的POST元素,即使我想我已經確定了所有的人都在代碼中。

回答

1

首先,選項CURLOPT_COOKIEFILE/CURLOPT_COOKIEJAR必須用全路徑值進行初始化。 「cookie3.txt」是相對路徑。 其次,不要手動構建POST數據,而應使用http_build_query()

所以,你的代碼應該是這樣的:

$login_email = "xxxx"; 
$login_pass = "xxx"; 
$cookie_file_path = dirname(__FILE__)."/cookie3.txt"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://89.31.145.108/athezza/index.php'); 
$data = array(
    'php_action' => 'IDENTIFICATION_login', 'type_ident' => 'b2b', 'login' => $login_email, 'password' => $login_pass 
); 

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); 
curl_setopt($ch, CURLOPT_REFERER, "http://89.31.145.108/athezza/"); 
$page = curl_exec($ch); 
1

發佈的數據爲登錄之前,先瀏覽使用curl登錄頁面,讓您可以對您的文件中的一些會話cookie。

$home = curl_init(); 
curl_setopt($home, CURLOPT_URL, 'http://89.31.145.108/athezza/index.php'); 
curl_setopt($home, CURLOPT_COOKIEFILE, $cookie_file_path); 
curl_setopt($home, CURLOPT_COOKIEJAR, $cookie_file_path); 
curl_setopt($home, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); 
curl_exec($home); 
curl_close($home); 

現在,在此之後使用您的數據POST登錄憑證。