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

PHP は、curl を使用して discuz へのログインをシミュレートし、投稿をシミュレートします

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 12:41:52818ブラウズ

php は、curl を使用して discuz へのログインと投稿をシミュレートします

$discuz_url = 'http://127.0.0.1/discuz/';//フォーラムのアドレス

$login_url = $discuz_url .'logging.php?action=login';//ログインページのアドレス

?

?

$post_fields = array();

//次の 2 つの項目は変更する必要はありません

$post_fields['loginfield'] = 'ユーザー名';

$post_fields['loginsubmit'] = 'true';

//ユーザー名とパスワードを入力する必要があります

$post_fields['ユーザー名'] = 'tianxin';

$post_fields['パスワード'] = '111111';

//安全性に関する質問

$post_fields['questionid'] = 0;

$post_fields['answer'] = '';

//@todo 確認コード

$post_fields['seccoverify'] = '';

?

//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('フォーラムハッシュが見つかりません。');

}

?

?

?

//データをPOSTし、COOKIEを取得して、Webサイトの一時ディレクトリにCookieファイルを置きます

$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);

?

//ここでのハッシュ コードは、ログイン ウィンドウのハッシュ コードとは異なります。ここでの非表示には、追加の id 属性があります。

preg_match('//i', $contents, $matches);

if(!empty($matches)) {

? $formhash = $matches[1];

} else {

? die('フォーラムハッシュが見つかりません。');

}

?

?

$post_data = array();

//投稿タイトル

$post_data['subject'] = 'test2';

//コンテンツを投稿

$post_data['message'] = 'test2';

$post_data['topicsubmit'] = "はい";

$post_data['extra'] = '';

//タグを投稿

$post_data['tags'] = 'テスト';

//投稿のハッシュ コード、これは非常に重要です。このハッシュ コードが見つからない場合、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 ファイルをクリーンアップします

リンク解除($cookie_file);

?

?>

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