1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php中通过curl模拟登陆discuz论坛的实现代码【PHP】

php中通过curl模拟登陆discuz论坛的实现代码【PHP】

时间:2018-07-23 17:01:45

相关推荐

php中通过curl模拟登陆discuz论坛的实现代码【PHP】

后端开发|php教程

curl,模拟登陆,discuz

后端开发-php教程

libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。

php的curl真的是相当好用,网上一搜索相关文章都是关于curl模拟登陆的,很少人提供模拟discuz发贴的源码。

微店分销源码下载,树莓派ubuntu ui,上传下载文件到tomcat,爬虫的编程方法,穷游网的php面试题,seo前途lzw

<?php

$discuz_url = http://127.0.0.1/discuz/;//论坛地址

$login_url = $discuz_url .logging.php?action=login;//登录页地址

创客网站源码,vscode打开东西,pjsip ubuntu,手机版tomcat,sqlite运行脚本,京东插件下载手机版,前端框架要编写代码吗,如何利用爬虫看小说,php 显示源码,深泽优化seo,行业网站整站源码 php,vb获取网页 编码,网站模板目录扫描lzw

$post_fields = array();

//以下两项不需要修改

$post_fields[loginfield] = username;

$post_fields[loginsubmit] = rue;

//用户名和密码,必须填写

$post_fields[username] = ianxin;

$post_fields[password] = 111111;

//安全提问

$post_fields[questionid] = 0;

$post_fields[answer] = \;

//@todo验证码

$post_fields[seccodeverify] = \;

//获取表单FORMHASH

$ch = curl_init($login_url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$contents = curl_exec($ch);

curl_close($ch);

preg_match(//i, $contents, $matches);

if(!empty($matches)) {

$formhash = $matches[1];

} else {

die(Not found the forumhash.);

}

卡盟官网网站源码,lua54 vscode,ubuntu停用网卡,在cmd运行tomcat,爬虫养车,php 命名空间及use,潜江seo推广开户,用帝国制作网站模板,请贴html5模板lzw

//POST数据,获取COOKIE,cookie文件放在网站的temp目录下

$cookie_file = tempnam(./temp,cookie);

$ch = curl_init($login_url);

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_COOKIEJAR, $cookie_file);

curl_exec($ch);

curl_close($ch);

//取到了关键的cookie文件就可以带着cookie文件去模拟发帖,fid为论坛的栏目ID

$send_url = $discuz_url."post.php?action=newthread&fid=2";

$ch = curl_init($send_url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

$contents = curl_exec($ch);

curl_close($ch);

//这里的hash码和登陆窗口的hash码的正则不太一样,这里的hidden多了一个id属性

preg_match(//i, $contents, $matches);

if(!empty($matches)) {

$formhash = $matches[1];

} else {

die(Not found the forumhash.);

}

$post_data = array();

//帖子标题

$post_data[subject] = est2;

//帖子内容

$post_data[message] = est2;

$post_data[ opicsubmit] = "yes";

$post_data[extra] = \;

//帖子标签

$post_data[ ags] = est;

//帖子的hash码,这个非常关键!假如缺少这个hash码,discuz会警告你来路的页面不正确

$post_data[formhash]=$formhash;

$ch = curl_init($send_url);

curl_setopt($ch, CURLOPT_REFERER, $send_url); //伪装REFERER

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

$contents = curl_exec($ch);

curl_close($ch);

//清理cookie文件

unlink($cookie_file);

?>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。