用php_curl对discuzx2.5模拟登陆,保存cookie,并进行发帖的类-PHP源码
需要安装curl扩展
/isU', $contents, $matches);
//echo"";
//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('//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"";
print_r($rc);
echo $theformhash;
echo $the_cookie_file;
echo $thesendformhash;
unlink($rc->cookie_file);//删除cookie文件,也可以不删除
echo"ok!";
?>
/isU', $contents, $matches);
//echo"";
//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('//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"";
print_r($rc);
echo $theformhash;
echo $the_cookie_file;
echo $thesendformhash;
unlink($rc->cookie_file);//删除cookie文件,也可以不删除
echo"ok!";
?>
/phpyy/45050.htmlwww.phpzy.comtrue/phpyy/45050.htmlTechArticle用php_curl对discuzx2.5模拟登陆,保存cookie,并进行发帖的类-PHP源码 需要安装curl扩展 /isU, $contents, $matches); //echo" ";//print_r($matches);die; if(!empty($matches)) { $formhash = $matches[1]; } else { // die(Not...
PHP之友评论