<?php /* * * 作者:PHP中文网 * 类用途: 实现discuz2.5登陆发帖 */ class discuz_post{ var $login_url; var $post_login_array=array( ); var $post_url; var $cookie_file; public function get_formhash($login_url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $login_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $contents = curl_exec($ch);//print_r($contents);die; curl_close($ch); //正常发布的版本用如下方法可以获得登陆部分的formhash preg_match('/<input type="hidden"name="formhash"value="(.*)"/>/isU', $contents, $matches); //echo"<pre class="brush:php;toolbar:false">"; //print_r($matches);die; if(!empty($matches)) { $formhash = $matches[1]; } else { // die('Not found the forumhash.'); } return $formhash; } public function getcookie($login_url,$post){ $cookie_file = tempnam('./temp','cookie'); //print_r($cookie_file);die; $ch = curl_init($login_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_exec($ch); curl_close($ch); $this->cookie_file=$cookie_file; return $cookie_file; } public function use_cookie($send_url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $send_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_file); $contents = curl_exec($ch); curl_close($ch); //获得发帖页面的fromhash preg_match_all('/<input type="hidden"name="formhash"id="formhash"value="(.*)"/>/isU',$contents,$matches); if(!empty($matches)){ $formhash = $matches[1][0]; }else { $formhash='';//没有 } return $formhash; } public function post_newthread($send_url,$thread_data){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $send_url); curl_setopt($ch, CURLOPT_REFERER, $send_url);//伪装REFERER curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_file); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $thread_data); $contents = curl_exec($ch); curl_close($ch); return 1; } } //下面是代码例子******************************************************************************* $rc= new discuz_post(); //登陆的地址 $login_url='http://bbs.phpchina.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes'; $theformhash= $rc->get_formhash($login_url); //登陆部分需要发送的数据,这里处理没有验证码的 $login_array=array( 'username'=>'用户名', 'password'=>'密码', 'referer'=>'http://bbs.phpchina.com/', 'questionid'=>0, 'answer'=>'', 'seccodeverify'=>'', 'formhash'=>$theformhash,//这个貌似没有也可以发帖滴 ); //获得cookie文件 $the_cookie_file= $rc->getcookie($login_url,$login_array); $send_url ='http://bbs.phpchina.com/forum.php?mod=post&action=newthread&fid=2&infloat=yes'; $thesendformhash= $rc->use_cookie($send_url);//利用cookie文件的 $post_array=array( 'subject' =>"发帖,发帖测试",//标题 'message' =>"内容噢噢噢噢噢噢噢噢",//要超过10个字,奶奶的 'topicsubmit' =>"yes", 'extra' => '', 'tags' => 'Curl',//帖子标签 'formhash'=>$thesendformhash, ); $rc->post_newthread($send_url,$post_array);//发了一贴 echo"<pre class="brush:php;toolbar:false">"; print_r($rc); echo $theformhash; echo $the_cookie_file; echo $thesendformhash; unlink($rc->cookie_file);//删除cookie文件,也可以不删除 echo"ok!"; ?>
<?php /* * * 作者:PHP中文网 * 类用途: 实现discuz2.5登陆发帖 */ class discuz_post{ var $login_url; var $post_login_array=array( ); var $post_url; var $cookie_file; public function get_formhash($login_url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $login_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $contents = curl_exec($ch);//print_r($contents);die; curl_close($ch); //正常发布的版本用如下方法可以获得登陆部分的formhash preg_match('/<input type="hidden"name="formhash"value="(.*)"/>/isU', $contents, $matches); //echo"<pre class="brush:php;toolbar:false">"; //print_r($matches);die; if(!empty($matches)) { $formhash = $matches[1]; } else { // die('Not found the forumhash.'); } return $formhash; } public function getcookie($login_url,$post){ $cookie_file = tempnam('./temp','cookie'); //print_r($cookie_file);die; $ch = curl_init($login_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_exec($ch); curl_close($ch); $this->cookie_file=$cookie_file; return $cookie_file; } public function use_cookie($send_url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $send_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_file); $contents = curl_exec($ch); curl_close($ch); //获得发帖页面的fromhash preg_match_all('/<input type="hidden"name="formhash"id="formhash"value="(.*)"/>/isU',$contents,$matches); if(!empty($matches)){ $formhash = $matches[1][0]; }else { $formhash='';//没有 } return $formhash; } public function post_newthread($send_url,$thread_data){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $send_url); curl_setopt($ch, CURLOPT_REFERER, $send_url);//伪装REFERER curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_file); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $thread_data); $contents = curl_exec($ch); curl_close($ch); return 1; } } //下面是代码例子******************************************************************************* $rc= new discuz_post(); //登陆的地址 $login_url='http://bbs.phpchina.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes'; $theformhash= $rc->get_formhash($login_url); //登陆部分需要发送的数据,这里处理没有验证码的 $login_array=array( 'username'=>'用户名', 'password'=>'密码', 'referer'=>'http://bbs.phpchina.com/', 'questionid'=>0, 'answer'=>'', 'seccodeverify'=>'', 'formhash'=>$theformhash,//这个貌似没有也可以发帖滴 ); //获得cookie文件 $the_cookie_file= $rc->getcookie($login_url,$login_array); $send_url ='http://bbs.phpchina.com/forum.php?mod=post&action=newthread&fid=2&infloat=yes'; $thesendformhash= $rc->use_cookie($send_url);//利用cookie文件的 $post_array=array( 'subject' =>"发帖,发帖测试",//标题 'message' =>"内容噢噢噢噢噢噢噢噢",//要超过10个字,奶奶的 'topicsubmit' =>"yes", 'extra' => '', 'tags' => 'Curl',//帖子标签 'formhash'=>$thesendformhash, ); $rc->post_newthread($send_url,$post_array);//发了一贴 echo"<pre class="brush:php;toolbar:false">"; print_r($rc); echo $theformhash; echo $the_cookie_file; echo $thesendformhash; unlink($rc->cookie_file);//删除cookie文件,也可以不删除 echo"ok!"; ?>
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
刺客信條陰影:貝殼謎語解決方案
2 週前ByDDD
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)