加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何使用POST和Cookie登录cURL

发布时间:2020-12-13 13:11:35 所属栏目:PHP教程 来源:网络整理
导读:服务器成功接收登录名,密码和CAPTCHA.我如何用cookie做到这一点? 我不知道需要什么信息才能显示所有信息: 登录表格: div id="loginForm" div id="logo"img src="logo.png" border="0" //div div class="loginBar"Login/div form action="index.php" metho
服务器成功接收登录名,密码和CAPTCHA.我如何用cookie做到这一点?

我不知道需要什么信息才能显示所有信息:

登录表格:

<div id="loginForm">
 <div id="logo"><img src="logo.png" border="0" /></div>
 <div class="loginBar">Login</div>
  <form action="index.php" method="post">
    <input type="hidden" name="p" value="login" />
    <div class="line">
      <label>Captcha</label>
      <img src="captcha/securimage_show.php" border="0" />
    </div>
    <div class="line">
      <label>&nbsp;</label>
      <input type="text" name="captcha" value=""/>                
    </div>
    <div class="line">
      <label>&nbsp;</label>
      <input type="submit" value="Login" />
    </div>
  </form>                        
 <hr/>
 <a href="index.php?p=register" class="register" title="Click to register">Register</a>
</div>

cURL代码:

extract($_POST);

    //set POST variables
    $proxy = '127.0.0.1:8118';
    $url = 'http://example.com/index.php';
    $fields_string= 'p=login&user=' . $user . '&pass=' . $passwd . '&captcha=' . $_POST['captcha'] . '&submit=Login';

        //open connection
        $ch = curl_init();

        //set the url,number of POST vars,POST data
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
        curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
        curl_setopt($ch,CURLOPT_PROXY,$proxy);
        curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt");
        curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");
    //curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
        //execute post
        $result = curl_exec($ch);

        print_r(curl_error($ch));
        print_r(curl_getinfo($ch));
        print_r(curl_errno($ch));

        //close connection
        curl_close($ch);

curl getinfo:

[url] => http://example.com/index.php 
[content_type] => text/html 
[http_code] => 200 
[header_size] => 415 
[request_size] => 325 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0 
[total_time] => 1.549389 
[namelookup_time] => 3.7E-5 
[connect_time] => 0.000138 
[pretransfer_time] => 0.000142 
[size_upload] => 62 
[size_download] => 1585 
[speed_download] => 1022 
[speed_upload] => 40 
[download_content_length] => 1585 
[upload_content_length] => 0 
[starttransfer_time] => 1.27051 
[redirect_time] => 0 
[certinfo] => Array ( ) 
[redirect_url] =>

真正的cookie:

Host:                 example.com
Name:                 PHPSESSID
Path:                 /
Content:              7qk7bb17nr030g5j59h2gq3nq6
Content raw:          7qk7bb17nr030g5j59h2gq3nq6
Expires:              At end of session
Expires raw:          0
Send for:             Any type of connection
Send for raw:         false
Created:              Fri 25 Nov 2011 10:37:24 PM EET
Created raw:          1322253443569272
Last accessed:        Sat 26 Nov 2011 11:06:02 AM EET
Last accessed raw:    1322298361723991
HTTP only:            No
HTTP only raw:        false
This domain only:     No
This domain only raw: false
Policy:               no information available
Policy raw:           0
Status:               no information available
Status raw:           0
---

由curcurl在cookie.txt中生成的gerenated文件:

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

example.com FALSE   /   FALSE   0   PHPSESSID   crs9cm100agdfsujsncr964jg7

当我运行此代码时,服务器会收到Account,Passwd和Captcha successfull,但是有cookie错误:

Make sure you’ve cookies enabled

此外,我看到真正的cookie内容原始与libcurl生成不同.

此外,我从我的表单中看到我成功捕获了网络服务器cookie.

PS!我以登录表单从此链接收到cookie:

<img src="captcha/securimage_show.php" border="0" />
这可能是缺少属性的原因
curl_setopt($ch,CURLOPT_COOKIESESSION,TRUE);

这样,curl将被强制忽略“旧”会话cookie并开始新会话.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读