PHP_PHP チュートリアルのカールを介して discuz フォーラムへのログインをシミュレートするための実装コード

WBOY
リリース: 2016-07-21 15:21:07
オリジナル
1031 人が閲覧しました

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

//POST データを取得し、COOKIE を配置しますウェブサイトの一時ディレクトリ内の Cookie ファイル
$ cookie_file = tempnam('./temp','cookie');
curl_setopt($ch, CURLOPT_HEADER, 0); ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); _exec($ch) ;
curl_close($ch);
//Get キー Cookie ファイルに到達したら、その Cookie ファイルを使用して投稿をシミュレートできます。
$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_COOKI)エファイル、 $cookie_file);
$contents =curl_exec($ch);
//ここでのハッシュ コードは、ログイン ウィンドウのハッシュ コードとは異なります
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'] = '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); CURLOPT_POST、1) ;
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$contents =curl_close($ch);
unlink($cookie_file);



http://www.bkjia.com/PHPjc/324966.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/324966.html

技術記事

libcurl は、HTTPS 認証、HTTP POST、HTTP PUT、FTP アップロード (これは PHP の FTP 拡張機能を使用して完了することもできます)、HTTP フォームベースのアップロード、プロキシ、Cookie、ユーザー名とパスワードの認識もサポートしています...





ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート