[英]PHP cURL: No error but impossible to login in submit form
首先,對不起我的英語。 我已經閱讀了很長時間關於該論點的其他答案,但是沒有成功。
我想登錄“ https://webapp.wizards.com ”以下載頁面,但是在輸出中我獲得了登錄頁面(並且沒有錯誤!)。
謝謝!
這是登錄表單:
<form name="loginform" id="loginform" action="login.aspx" method="POST">
<input type="hidden" name="target" value=""><BR>
<table cellpadding="0" cellspacing="0" class="boxsearch">
<tr>
<td align="left" class="boxtitles" width="355">Member Login</td>
</tr>
<tr>
<td align="center" width="355" height="45">
<table cellpadding="2" cellspacing="2" align="center" valign="middle" width="355">
<tr>
<td align="right">Membership #:</td>
<td align="left">
<input type="text" name="dcinumber" id="dcinumber" value="" maxlength="10">
</td>
</tr>
<tr>
<td align="right">Password: </td>
<td align="left">
<input type="password" name="password" id="password" value="">
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="button" name="submitlogin" id="submitlogin" class="submitbutton" value="Login" onclick="document.loginform.submit();">
</td>
</tr>
</table>
</td>
</tr>
</table>
<input type="hidden" name="action" id="action" value="login">
這是我的PHP代碼:
$cookie_path = "cookie.txt";
$user = "my_user";
$password = "my_password";
$url_login = "https://webapp.wizards.com/login.aspx";
$con = curl_init();
curl_setopt($con, CURLOPT_URL, $url_login);
curl_setopt($con, CURLOPT_RETURNTRANSFER, true);
curl_setopt($con, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($con, CURLOPT_POST, true);
curl_setopt($con, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)");
curl_setopt($con, CURLOPT_COOKIEJAR, $cookie_path);
curl_setopt($con, CURLOPT_COOKIEFILE, $cookie_path);
curl_setopt($con, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($con, CURLOPT_COOKIESESSION, true);
curl_setopt($con, CURLOPT_POSTFIELDS, array("dcinumber" => $user, "password" => $password));
$data = curl_exec($con);
if($data == false)
{
echo 'Error: ' . curl_error($con);
curl_close($con);
}
else
{
echo $data;
curl_close($con);
}
在處理遠程表單發布時,使用網絡嗅探工具是一個非常好的主意,這樣您就可以看到正在進行的通信。 例如,在Chrome中,您可以使用:開發人員工具->網絡->文檔,查看提交表單時發生的情況。
通過在ttps://webapp.wizards.com/login.aspx上嗅探登錄表單,我可以看到以下發布的參數:
target:
dcinumber:
password:
action:login
如果您的請求不包含這些參數,則Web應用程序很有可能會回退您的請求(通過再次顯示頁面並顯示錯誤消息)。 這就是為什么您在結果中看到登錄頁面的原因。
因此,您的帖子字段應更像這樣:
array("dcinumber" =>$user, "password" => $password, 'target' => $target, 'action' => 'login')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.