后端开发|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);
?>