【问题标题】:Little Issue about curl?关于 curl 的小问题?
【发布时间】:2012-07-27 05:05:38
【问题描述】:

我正在用 php 做一个小机器人,它登录到站点“A.com”,然后恢复会话,将其保存在我的服务器中,然后使用此会话重新连接并获取受限网页的内容需要登录名/密码。

这个将与Curl连接的表格:

            <form action="wLoginUser.asp" method="post" name="FormLoginUser" id="FormLoginUser">
                <input type="hidden" name="Page" id="Page" value= "/PasserAnnonce.asp" />

                        <input type="hidden" name="sQueryString" value= "" id="sQueryString" />


                    <table >
                        <tr><td  height="20"></td></tr>
                        <tr  > 
                            <td class="if_label_field"><label id="id_lab_mail">Mail :</label></td>
                            <td><input type="text" id="idMailLogin" name="idMailLogin" size="35" value="fff@gmail.com"/></td>
                        </tr>
                        <tr >
                            <td class="if_label_field"><label id="id_lab_pwd">Mot de passe :</label></td>

                            <td><input type="password"  id="idPasswordLogin" name="idPasswordLogin" size="20" value="78599g056" onkeypress= "KeyDownPasssword(event);"/></td>
                        </tr>
                        <tr >
                        <td></td>
                        <td>
                            <input type="checkbox" name="chk_session_open" id="chk_session_open" value="1" />
                            <span style="color: #CC0000;">Garder ma session ouverte (72h)</span>
                        <br/>

                            <input type="checkbox" name="chk_save_loginpwd" id="chk_save_loginpwd" value="1" checked/>
                            <span style="color: #0066FF;">Se souvenir du mail / passe (15j)</span>
                        <br/><br/>
                        <span >[Décocher si machine partagée]</font>
                    </td>
                    </tr>
                        <tr><td></td><td height="10"><img style="CURSOR:pointer" onclick="Login_OnClick();" src="/images/b_valider.gif" width="67" height="18" border="0" alt=""/></td></tr>
                        <tr><td  height="20"></td></tr>

                        <tr align="left">
                        <td colspan="2">
                        <span class="info">Vous avez oublié votre mot de passe ?&nbsp;</span>
                        <a href="SendPassword.asp">Cliquez ici</a> 
                        </td></tr>
                    </table>
            </form>

这是我的完整代码(作品):

    $link= 'http://www.tunisie-annonce.com/wLoginUser.asp';  

    $postfields = array(
                  'idMailLogin' => 'XXX@gmail.com',
                  'idPasswordLogin' => 'XXX',
                  'chk_session_open' => 'on',
                  'chk_save_loginpwd' => 'on'
                   );

    $curl = curl_init();  

    curl_setopt($curl, CURLOPT_URL, $link);  
    curl_setopt($curl, CURLOPT_COOKIESESSION, true);  
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  
    curl_setopt($curl, CURLOPT_POST, true);  
    curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);  

    $cookies = __DIR__.'\cookies.txt';

    // For cookies
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookies);

    $return = curl_exec($curl);  
    curl_close($curl);  

/**************************************************
request 2 : get the content of restrected web page
**************************************************/
  //the restricted web page require login!!
  $lien2 = "http://www.tunisie-annonce.com/PasserAnnonce.asp";   
  $curl = curl_init($lien2);

curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);


// Read from cookies
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookies);

$return = curl_exec($curl);
//show restricted web page
echo $return;

curl_close($curl);

我测试了代码,它与其他网站完美配合......但在这个网站上却异常不工作(没有显示错误).. 我的问题是: 导致此错误的潜在问题是什么?

【问题讨论】:

    标签: php html curl session-cookies libcurl


    【解决方案1】:

    您应该在 exec 之后尝试 curl_getinfo($curl) 以查看服务器给您的响应。

    【讨论】:

    • 问题是我做了什么 $postfield array(...),正确的是 $postfield = "var1=val1&var2=val2..";
    【解决方案2】:

    链接应该是

    $link = 'http://www.tunisie-annonce.com/LoginUser.asp';
    

    表单还有 2 个隐藏字段

    <input type="hidden" name="Page" id="Page" value="/PasserAnnonce.asp">
    <input type="hidden" name="sQueryString" value="" id="sQueryString">
    

    总是返回所说的,不是预期的

    <input type="checkbox" name="chk_session_open" id="chk_session_open" value="1">
    

    因此

    'chk_session_open' => '1',
    'chk_save_loginpwd' => '1'
    

    登录按钮有javascript,所以检查函数中发生了什么

    <img style="CURSOR:pointer" onclick="Login_OnClick();" src="/images/b_valider.gif" width="67" height="18" border="0" alt="">
    

    因此,您应该通过这些检查您的问题出在哪里。注意:您应该复制他们在登录过程中所做的一切。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多