ホームページ > バックエンド開発 > PHPチュートリアル > curl 远程登录 以及远程发贴有关问题

curl 远程登录 以及远程发贴有关问题

WBOY
リリース: 2016-06-13 10:20:36
オリジナル
995 人が閲覧しました

curl 远程登录 以及远程发贴问题
http://www.czhi-fi.com/bbsxp/ 论坛 是个bbsxp论坛系统的 是5.15版本。
我用snoopy可以远程登录并发贴。而用curl却无法实现远程登录,更不要说远程发贴了。
我很想用curl实现模拟登录,恳请高手赐教!!拜谢!!


说明:
登录地址:http://www.czhi-fi.com/bbsxp/login.asp
用户名 :mytest
密 码 :111111

首先把我成功用snoopy远程登录并发贴的代码公开:

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->$url = "http://www.czhi-fi.com/bbsxp/";  //论坛地址$url1 = "http://www.czhi-fi.com/bbsxp/default.asp";  //源地址$url2 = "http://www.czhi-fi.com/bbsxp/login.asp";  //登录提交判断页$posts = array();$posts['menu'] = 'add';       $posts['url'] = $url1 ; $posts['username'] = 'mytest'; $posts['userpass'] = '111111'; include("Snoopy.class.php");   $snoopy = new Snoopy;   $snoopy->submit($url2,$posts); //模拟浏览器提交并取得返回结果  /*下面是发贴*/$url3 = "http://www.czhi-fi.com/bbsxp/newtopic.asp";  //发贴提交页面。$topic = '经典笑话:离婚';  //标题$content = '丈大:“孩子他娘。咱们离婚好吗?”妻子:“咱们从来下吵不闹,为什么要离婚?”丈夫:“我的意思是,离婚以后我再和你结婚。”妻子:“啊、你今天发神经疯了还是怎么着?”丈夫:“没有啊!你看,这几年年轻人结婚,把我的腰包都掏空了,如果我们不再结一次婚,这些践怎么捞得回来哟?';$posts = array();$posts['forumid'] = '16';      //板块id号  这个是灌水板块     $posts['topic'] = $topic ;  //标题$posts['content'] = $content ;  //内容$snoopy->submit($url3,$posts); //模拟浏览器提交并取得返回结果  //print_r($snoopy->results);$content = $snoopy->results ;//http://www.czhi-fi.com/bbsxp/ShowPost.asp?id=3148//ShowForum.asp?forumid=16if(preg_match("/\"(\d+)\",\"[^\r\n\"]*?\",\"[^\r\n\"]*?\",\"mytest\"/is",$content, $matches)){  if(!empty($matches[1])){    $out = $url . "ShowPost.asp?id=".$matches[1] ;  }else{    $out = "没有采集到刚发贴的地址,<a href="%5C%22%22.%24url.%22ShowForum.asp?forumid=16%5C%22" target='\"_blank\"'>查看此板块内有没有新发贴</a>";  }}else{  $out = "发贴可能失败了,<a href="%5C%22%22.%24url.%22ShowForum.asp?forumid=16%5C%22" target='\"_blank\"'>查看此板块内有没有新发贴</a>";}echo "<a href="%5C%22%24out%5C%22" target='\"_blank\"'>".$out."</a>" ;
ログイン後にコピー

*************************************
 下面是我的curl登录代码,这个代码不能实现远程登录,请高人指点!
PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->$login_url = "http://www.czhi-fi.com/bbsxp/login.asp";//登录页地址$source_url = "http://www.czhi-fi.com/bbsxp/default.asp";//源页地址$post_fields = array();//以下两项固定值$post_fields['menu'] = 'add';$post_fields['url'] = 'http://www.czhi-fi.com/bbsxp/Default.asp';//用户名和密码,必须填写$post_fields['username'] = "mytest";$post_fields['userpass'] = "111111";$ch = curl_init($login_url);curl_setopt($ch, CURLOPT_REFERER, $source_url);curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 允许自动跳转$contents = curl_exec($ch);curl_close($ch);echo $contents ;
ログイン後にコピー



我很想用curl实现模拟登录,恳请高手赐教!!拜谢!!


------解决方案--------------------
cookie得获取(http 返回头中的set-Cookie项)并反馈过去(http请求头中的cookie项)。

PHP code
$login_url = "http://www.czhi-fi.com/bbsxp/login.asp";//登录页地址$source_url = "http://www.czhi-fi.com/bbsxp/default.asp";//源页地址$post_fields = array();//以下两项固定值/*$post_fields['menu'] = 'add';$post_fields['url'] = 'http://www.czhi-fi.com/bbsxp/Default.asp';//用户名和密码,必须填写$post_fields['username'] = "mytest";$post_fields['userpass'] = "111111";*/$cookie="cookie.txt";$ch = curl_init($login_url);curl_setopt($ch, CURLOPT_REFERER, $source_url);curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=mytest&userpass=111111&menu=add&url=http://www.czhi-fi.com/bbsxp/Default.asp');curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 允许自动跳转$contents = curl_exec($ch);curl_close($ch);echo $contents;<div class="clear">
                 
              
              
        
            </div>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート