2015-08-29 154 views
-1

我正在使用php代碼來登錄到一個網站, 我使用curl來做到這一點,但我有一個問題:(登錄到特定的網站...當我使用這個代碼,它不會登錄(這意味着如果我發佈了錯誤的密碼或錯誤的用戶名,它不會顯示登錄錯誤,我認爲它不會發布我的數據?!?!?!?!我不知道,請查看代碼的打擊)使用curl登錄到網站

<?php 
$ch = curl_init(); 
$url = 'http://example.com/login.php'; 
$data = "css/style1.css"; 
curl_setopt($ch, CURLOPT_URL, $url.'/index.php'); 
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36'); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt"); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt"); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=something&password=something"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$answer = curl_exec($ch); 
$answer = str_replace('href="','href="'.$url.'/',$answer); 
echo $answer; 
?> 

我應該說我用這個代碼在其他網站的URL,但它的工作原理,它顯示了我的錯誤登錄,但在這個網站它不工作.. ..

這裏是我的網址HTML源登錄(登錄頁面):

<!DOCTYPE html> 
 
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> 
 
<!--[if IE 7]> <html class="lt-ie9 lt-ie8" lang="en"> <![endif]--> 
 
<!--[if IE 8]> <html class="lt-ie9" lang="en"> <![endif]--> 
 
<!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]--> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
 
    <title>my url code</title> 
 
    <link rel="stylesheet" href="css/style1.css"> 
 
    <!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]--> 
 
</head> 
 
<body> 
 
<div id="header_outer"> 
 
</div> 
 
    <form method="post" action="" class="login"> 
 
    <p> 
 
     <label for="login">Username: </label> 
 
     <input type="text" name="username" id="username" value=""> 
 
    </p> 
 

 
    <p> 
 
     <label for="password">Password: </label> 
 
     <input type="password" name="password" id="password" value=""> 
 
    </p> 
 

 
    <p class="login-submit"> 
 
     <button type="submit" name="Login" class="login-button">Login</button> 
 
    </p> 
 
    <p class="forgot-password"><a href="forgot.php">Forgot your password?</a></p> 
 
\t \t 
 
    
 
    </form> 
 

 
</body> 
 
</html>

+0

啓用'CURLOPT_VERBOSE'進行調試。 (不,沒有人可以在沒有具體的錯誤信息的情況下告訴你什麼是錯誤的,或者知道示例站點如何處理登錄[或阻止腳本訪問]真的。雙'/ index.php'可能是相關的,而且缺少提交按鈕請求值。) – mario

+0

in'CURLOPT_POSTFIELDS' **'** password **'的** p **缺失 – mmm

+0

親愛的馬里奧CURLOPT_VERBOSE未定義常量 –

回答

0

注:如果您在HTML表單中使用的元素,不同的 瀏覽器可以提交不同的值。 從 http://www.w3schools.com/tags/tag_button.asp

這意味着按鈕被提交過,它的名字「登錄」的參數,所以你必須把它列入你的CURLOPT_POSTFIELDS所以它會被處理。

curl_setopt($ch, CURLOPT_POSTFIELDS, "username=something&password=something&Login=true"); 
+0

非常感謝它的工作:* –