簡體   English   中英

PHP cURL:沒有錯誤,但無法以提交形式登錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM