ホームページ >バックエンド開発 >PHPチュートリアル >phpカールを使用してdiscuzへのログインをシミュレートし、投稿をシミュレートする方法

phpカールを使用してdiscuzへのログインをシミュレートし、投稿をシミュレートする方法

WBOY
WBOYオリジナル
2016-07-25 09:04:131168ブラウズ
  1. //link: http://bbs.it-home.org

  2. $discuz_url = 'http://127.0.0.1/discuz/';//フォーラムAddress
  3. $login_url = $discuz_url .'logging.php?action=login';//ログインページのアドレス

  4. $post_fields = array();

  5. //以下の2つの項目は必須ではありません変更可能です
  6. $post_fields['loginfield'] = 'username';
  7. $post_fields['loginsubmit'] = 'true';
  8. //ユーザー名とパスワードを入力する必要があります
  9. $post_fields['username'] = 'tianxin ';
  10. $post_fields ['password'] = '111111';
  11. //安全な質問
  12. //リンク: http://bbs.it-home.org
  13. $post_fields['questionid'] = 0;
  14. $post_fields ['answer'] = '';
  15. //@todo 確認コード
  16. $post_fields['seccoverify'] = '';

  17. //フォームを取得

  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('//i', $contents, $matches);
  24. if(!empty($matches)) {
  25. $formhash = $matches[1];
  26. } else {
  27. die('フォーラムハッシュが見つかりません。');
  28. }

  29. //データをPOSTし、COOKIEを取得し、ウェブサイトの一時ディレクトリに Cookie ファイルを作成します。 次へ

  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 _クッキージャー、$ cookie_file);
  37. curl_exec($ch) ;
  38. curl_close($ch);

  39. // キー Cookie ファイルを取得した後、その Cookie ファイルを使用して投稿をシミュレートできます。フォーラムの列ID

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

  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. //ここのハッシュ コードとログイン ウィンドウ 通常のハッシュ コードは異なります。ここの隠しコードには追加の id 属性があります

  48. preg_match('//i', $contents, $matches);
  49. if(!empty($matches)) {
  50. $formhash = $matches [1];
  51. } else {
  52. die( 'フォーラムハッシュが見つかりません。');
  53. }

  54. $post_data = array();

  55. //投稿タイトル
  56. $post_data['subject '] = 'test2';
  57. //コンテンツを投稿
  58. $post_data['message'] = 'test2';
  59. $post_data['topicsubmit'] = "はい";
  60. $post_data['extra'] = '';
  61. //投稿タグ
  62. $post_data['tags '] = 'test';
  63. //投稿のハッシュ コード、これは非常に重要です。このハッシュ コードが見つからない場合、discuz はソース ページが正しくないことを警告します
  64. $post_data['formhash']=$formhash;

  65. $ch =curl_init($send_url);

  66. curl_setopt ( $ch, CURLOPT_REFERER, $send_url); //REFERER を偽装
  67. curl_setopt($ch, CURLOPT_HEADER, 0);
  68. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
  69. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
  70. カール_se topt( $ch, CURLOPT_POST, 1);
  71. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
  72. $contents =curl_exec($ch);
  73. curl_close($ch);

  74. / /Cookie ファイルをクリーンアップします

  75. unlink($cookie_file);
  76. ?>

コードをコピー

>>> PHP シミュレートされたログインに関する記事の詳細については、トピック リンクを参照してください: PHP シミュレートログイン phpカールシミュレーション ログインチュートリアルを完了



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。