Discuz教程网

[二次开发] Discuz X2.5初级发帖机源码

[复制链接]
authicon dly 发表于 2013-4-11 14:16:58 | 显示全部楼层 |阅读模式
  1. <?php
  2. if($_POST["submit"] == "提交"){
  3.     $discuz_url = 'http://localhost/comsenz/discuz/upload/';//论坛地址

  4.     $login_url = $discuz_url.'member.php?mod=logging&action=login';//登录页地址

  5.     $post_fields = array();
  6.     //以下两项不需要修改
  7.     $post_fields['loginfield'] = 'username';
  8.     $post_fields['loginsubmit'] = 'true';

  9.     //用户名和密码,必须填写
  10.     $post_fields['username'] = $_POST["username"];
  11.     $post_fields['password'] = $_POST["password"];

  12.     //安全提问
  13.     $post_fields['questionid'] = 0;
  14.     $post_fields['answer'] = '';

  15. //@todo验证码
  16.     $post_fields['seccodeverify'] = '';

  17.     //获取表单FORMHASH
  18.     $ch = curl_init($login_url);
  19.     curl_setopt($ch, CURLOPT_HEADER, 0);
  20.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  21.     $contents = curl_exec($ch);
  22.     curl_close($ch);

  23.     preg_match('/<input\s*type="hidden"\s*name="formhash"\s*value="(.*?)"\s*\/>/i', $contents, $matches);

  24.     if(!empty($matches)) {
  25.         $formhash = $matches[1];
  26.     } else {
  27.         die('Not found the loginhash.');
  28.     }

  29.     //POST数据,获取COOKIE,cookie文件放在网站的temp目录下
  30.     $cookie_file = tempnam('./temp','cookie');//建立一个临时档,返回临时档名

  31.     $ch = curl_init($login_url);

  32.     curl_setopt($ch, CURLOPT_HEADER, 0);
  33.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  34.     curl_setopt($ch, CURLOPT_POST, 1);
  35.     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
  36.     curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

  37.     curl_exec($ch);
  38.     curl_close($ch);

  39.     //取到了关键的cookie文件就可以带着cookie文件去模拟发帖,fid为论坛的栏目ID
  40.     $send_url = $discuz_url."forum.php?mod=post&action=newthread&fid=".$_POST["fid"];

  41.     $ch = curl_init($send_url);

  42.     curl_setopt($ch, CURLOPT_HEADER, 0);
  43.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  44.     curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

  45.     $contents = curl_exec($ch);
  46.     curl_close($ch);

  47.     //这里的hash码和登陆窗口的hash码的正则不太一样,这里的hidden多了一个id属性
  48.     preg_match('/<input\s*type="hidden"\s*name="formhash"\s*id="formhash"\s*value="(.*?)"\s*\/>/i', $contents, $matches);
  49.    
  50. #echo $contents;exit;

  51. if(!empty($matches)) {
  52.         $formhash = $matches[1];
  53.     } else {
  54.         die('Not found the posthash.');
  55.     }

  56.     $post_data = array();

  57.     //帖子标题
  58.     $post_data['subject'] = $_POST["subject"];
复制代码
游客,如果您要查看本帖隐藏内容请回复



上一篇:基于Apache+Mysql+PHP安装PHPwind、Discuz等论坛并通过mydumper、binlog实现数据库的
下一篇:局域网内在虚拟机里搭建Discuz 论坛图解教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 03:35

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表