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> </label> <input type="text" name="captcha" value=""/> </div> <div class="line"> <label> </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错误:
此外,我看到真正的cookie内容原始与libcurl生成不同. 此外,我从我的表单中看到我成功捕获了网络服务器cookie. PS!我以登录表单从此链接收到cookie: <img src="captcha/securimage_show.php" border="0" />
这可能是缺少属性的原因
curl_setopt($ch,CURLOPT_COOKIESESSION,TRUE); 这样,curl将被强制忽略“旧”会话cookie并开始新会话. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |