php专区

 首页 > php专区 > PHP应用 > CMS建站 > php中用curl模拟登录discuz以及模拟发帖 - Discuz

php中用curl模拟登录discuz以及模拟发帖 - Discuz

分享到:
【字体:
导读:
          本文章完美的利用了php的curl功能实现模拟登录discuz以及模拟发帖,本教程供参考学习 ?php$discuz_url=lsquo;http: localhost klive root...

php中用curl模拟登录discuz以及模拟发帖

本文章完美的利用了php的curl功能实现模拟登录discuz以及模拟发帖,本教程供参考学习.

  1. $discuz_url = ‘http://localhost/klive/root/Discuz_X2.5_SC_GBK/’;//论坛地址 
  2. $login_url = $discuz_url .’member.php?mod=logging&action=login’;//登录页地址 
  3. $post_fields = array(); 
  4. //以下两项不需要修改 
  5. $post_fields['loginfield'] = ‘username’; 
  6. $post_fields['loginsubmit'] = ‘true’; 
  7. //用户名和密码,必须填写 
  8. $post_fields['username'] = ‘admin’; 
  9. $post_fields['password'] = ‘admin’; 
  10. //安全提问 
  11. $post_fields['questionid'] = 0; 
  12. $post_fields['answer'] = ”; 
  13. //@todo验证码 
  14. $post_fields['seccodeverify'] = ”; 
  15. //获取表单FORMHASH 
  16. $ch = curl_init($login_url); 
  17. curl_setopt($ch, CURLOPT_HEADER, 0); 
  18. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  19. $contents = curl_exec($ch); 
  20. curl_close($ch); 
  21. preg_match(‘//i’, $contents
  22. $matches); 
  23. if(!emptyempty($matches)) { 
  24. $formhash = $matches[1]; 
  25. else { 
  26. die(‘Not found the forumhash.’); 
  27. //POST数据,获取COOKIE,cookie文件放在网站的temp目录下 
  28. $cookie_file = tempnam(‘./temp’,'cookie’); 
  29. $ch = curl_init($login_url); 
  30. curl_setopt($ch, CURLOPT_HEADER, 0); 
  31. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  32. curl_setopt($ch, CURLOPT_POST, 1); 
  33. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); 
  34. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); 
  35. curl_exec($ch); 
  36. curl_close($ch); 
  37. //取到了关键的cookie文件就可以带着cookie文件去模拟发帖,fid为论坛的栏目ID 
  38. $send_url = $discuz_url.”forum.php?mod=post&action=newthread&fid=2″; 
  39. $ch = curl_init($send_url); 
  40. curl_setopt($ch, CURLOPT_HEADER, 0); 
  41. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  42. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); 
  43. $contents = curl_exec($ch); 
  44. curl_close($ch); 
  45. //这里的hash码和登陆窗口的hash码的正则不太一样,这里的hidden多了一个id属性 
  46. preg_match(‘//i 
  47. ’, $contents$matches); 
  48. if(!emptyempty($matches)) { 
  49. $formhash = $matches[1]; 
  50. else { 
  51. die(‘Not found the forumhash.’); 
  52. $post_data = array(); 
  53. //帖子标题 
  54. $post_data['subject'] = ‘test2′; 
  55. //帖子内容 
  56. $post_data['message'] = ‘test2′; 
  57. $post_data['topicsubmit'] = “yes”; 
  58. $post_data['extra'] = ”; 
  59. //帖子标签 
  60. $post_data['tags'] = ‘test’; 
  61. //帖子的hash码,这个非常关键!假如缺少这个hash码,discuz会警告你来路的页面不正确 
  62. $post_data['formhash']=$formhash
  63. $ch = curl_init($send_url); 
  64. curl_setopt($ch, CURLOPT_REFERER, $send_url);       //伪装REFERER 
  65. curl_setopt($ch, CURLOPT_HEADER, 0); 
  66. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 
  67. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); 
  68. curl_setopt($ch, CURLOPT_POST, 1); 
  69. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 
  70. $contents = curl_exec($ch); 
  71. curl_close($ch); 
  72. //清理cookie文件 
  73. unlink($cookie_file); 
  74. ?> 
分享到:
discuz X3全局变量$_G - Discuz
discuz X3全局变量$_G $_G 保存了 Discuz! 中所有的预处理数据,缓存能够很好的提高程序的性能,一些配置数据没必要每次都查询数据库,只要在修改了的时候更新下缓存即可。 Discuz! 中所有的缓存保存在 $_G[cache] 中 $_G[member] 会员信息数据 $_G[uid] 用户 uid $_G[username] 用户名 $_G...
discuz过滤用户输入 - Discuz
discuz过滤用户输入 function dhtmlspecialchars($string, $flags = null) {  if(is_array($string)) {  //如果是数组。将用户数组划分为2维  foreach($string as $key => $val) {  $string[$key] = dhtmlspecialchars($val, $flags);  // print_r($val);...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……