2013-02-12 48 views
0

我已經寫了一個php腳本來從curl登錄到一個網站。下面是我的代碼:如何檢查登錄成功在PHP curron?

<?php 
// INIT CURL 
$ch = curl_init(); 

// SET URL FOR THE POST FORM LOGIN 
curl_setopt($ch, CURLOPT_URL, 'http://wordpress.dev/wp-login.php'); 

// ENABLE HTTP POST 
curl_setopt ($ch, CURLOPT_POST, 1); 

// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD 
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'log=admin&pwd=admin'); 

// IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES 
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 

# Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL 
# not to print out the results of its query. 
# Instead, it will return the results as a string return value 
# from curl_exec() instead of the usual true/false. 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 

// EXECUTE 1st REQUEST (FORM LOGIN) 
$store = curl_exec ($ch); 
var_dump($store);exit; 

// CLOSE CURL 
curl_close ($ch); 

?> 

如果我給正確的密碼,它提供的字符串()「,如果給出錯誤的密碼,它重定向我 登錄頁面如何檢查登錄成功

+0

curl_exec返回字符串告訴你結果。 – 2013-02-12 11:56:46

+0

如果你有答案,請接受它。 – 2014-11-20 05:54:57

回答

0

,你可以嗎?與$store檢查會成功,否則爲false返回true。

檢查Storing the response of login using curl?,認爲這將解決您的問題。

+0

即使給出錯誤的密碼,它總是返回bool(true) – ehp 2013-02-12 11:58:07

1

curl_exec()成功返回TRUE或失敗時出現FALSE

<?php 

    //execute the request (the login) 
    $store = curl_exec($ch);  

    if($store){ //check for true/false 
     //Logged in 
    }else{ 
     //Login failed 
    } 

?> 

UPDATE:

如果你是HTTPS,補充一點:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

更新2:

補充一點:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
+0

即使我給出錯誤密碼,它總是返回bool(true) – ehp 2013-02-12 11:59:00

+0

我在帖子中發佈了我的整個scipt。請看看 – ehp 2013-02-12 12:03:11

+0

@ehp檢查更新後的答案,並再次發佈輸出? – AlphaMale 2013-02-12 12:11:13

2

您還需要檢查響應代碼。這可能會幫助你。

$contents = curl_exec($ch); 
$httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE); 

var_dump($httpcode); 
var_dump($contents); 

在大多數情況下,HTTP代碼200是有效的認證。

+0

這裏輸出的是 var_dump($ httpcode); var_dump($ contents); int(302) bool(true) – ehp 2013-02-12 12:07:05

+0

意味着您正在獲得302個http代碼,這意味着您需要重定向http://en.wikipedia.org/wiki/HTTP_302,您將在標題中獲得另一個URL以重定向。 – 2013-02-12 12:09:08

+0

在我的情況下,www.gmail.com會將我重定向到https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1<mpl=默認&ltmplcache = 2 – 2013-02-12 12:15:55

0

您應該注意狀態碼。

即使您的登錄未驗證,curl_exec也會返回true。

它只是意味着捲曲請求的執行沒有錯誤..

確保狀態代碼爲「200」 ..