ホームページ  >  記事  >  バックエンド開発  >  PHPでのcurlシミュレーションを通じてdiscuzフォーラムにログインするためのdiscuzフォーラムテンプレート実装コード

PHPでのcurlシミュレーションを通じてdiscuzフォーラムにログインするためのdiscuzフォーラムテンプレート実装コード

WBOY
WBOYオリジナル
2016-07-29 08:48:00871ブラウズ

libcurl は、HTTPS 認証、HTTP POST、HTTP PUT、FTP アップロード (これは PHP の FTP 拡張機能を通じて行うこともできます)、HTTP フォームベースのアップロード、プロキシ、Cookie、およびユーザー名 + パスワード認証もサポートしています。
PHP のcurl は非常に使いやすいです。インターネットで関連記事を検索すると、シミュレートされたディスク投稿のソース コードを提供している人はほとんどいません。

コードをコピーします コードは次のとおりです:


$discuz_url = 'http://127.0.0.1/discuz/';//フォーラムのアドレス
$login_url = $discuz_url 。 'logging.php ?action=login';//ログインページのアドレス
$post_fields = array();
//以下の2つの項目は変更する必要はありません
$post_fields['loginfield'] = 'username'; $post_fields['loginsubmit'] = 'true';
//ユーザー名とパスワードを入力する必要があります
$post_fields['username'] = 'tianxin';
$post_fields['password'] = '111111'; /セキュリティの質問
$post_fields['questionid '] = 0;
$post_fields['answer'] = ''
//@todo 確認コード
$post_fields['seccoverify'] = '';フォームハッシュ
$ch =curl_init($login_url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
preg_match('//i', $contents, $matches); (!empty($matches)) {
$formhash = $matches[1];
} else {
die('フォーラムハッシュが見つかりません。')
//POST データを取得し、Cookie を配置しますウェブサイトの一時ディレクトリ内のファイル
$cookie_file = tempnam('./temp','cookie');
$ch =curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0); ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl _exec($ch); curl_close($ch);
//キーを取得します Cookie ファイルを使用して投稿をシミュレートできます。fid はフォーラムの列 ID です
$send_url = $discuz_url."post.php?action=newthread&fid=2";
$ch =curl_init($send_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); =curl_exec( $ch);
curl_close($ch);
//ここのハッシュ コードはログイン ウィンドウのハッシュ コードとは異なります
preg_match('//i', $contents, $matches);
if(!empty($matches) )) {
$formhash = $matches[1 ];
} else {
die('フォーラムハッシュが見つかりません。');
$post_data = array(); '] = 'test2'
//コンテンツを投稿
$post_data['message'] = 'test2';
$post_data['extra'] = '';
//投稿タグ
$post_data['tags '] = 'test';
//投稿のハッシュ コード、これは非常に重要です。このハッシュ コードが見つからない場合、discuz はソース ページが間違っていることを警告します
$post_data['formhash']=$formhash;
$ch =curl_init($send_url);
curl_setopt($ch, CURLOPT_REFERER, $send_url) ; // リファラーを偽装
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); OPT_POST、1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$contents =curl_exec($ch);
//Cookie ファイルを削除します

;
上記は、discuz フォーラム テンプレートのコンテンツを含め、curl を介して discuz フォーラムへのログインをシミュレートするための PHP での discuz フォーラム テンプレートの実装コードを紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。


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