ホームページ > php教程 > php手册 > PHPのcurlを介してdiscuzフォーラムへのログインをシミュレートするための実装コード

PHPのcurlを介してdiscuzフォーラムへのログインをシミュレートするための実装コード

WBOY
リリース: 2016-06-13 12:02:30
オリジナル
911 人が閲覧しました

libcurl は、HTTPS 認証、HTTP POST、HTTP PUT、FTP アップロード (これは PHP の FTP 拡張機能を使用して完了することもできます)、HTTP フォームベースのアップロード、プロキシ、Cookie、ユーザー名とパスワードの認証もサポートしています。
PHP のcurl は非常に使いやすいです。インターネットで関連記事を検索すると、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'] = ''; FORMHASH
$ch =curl_init ($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
$contents =curl_exec($ch); ;
curl_close($ch );
preg_match('// i', $contents, $matches );
if(!empty($matches)) {
$formhash = $matches[1];
} else {
die(' forumhash.');
}

//データをPOSTし、COOKIEを取得し、Webサイトの一時ディレクトリにCookieファイルを置きます
$cookie_file = tempnam('./temp','クッキー');
$ch =curl_init ($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0); CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_exec($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); //ここでのハッシュ コードは、ログイン ウィンドウのハッシュ コードとは異なります。ここの hidden には追加の 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['tags '] = 'test';
//投稿のハッシュ コード、これは非常に重要です。このハッシュ コードが見つからない場合、discuz はソース ページが正しくないことを警告します。

$ch =curl_init($send_url); ( $ch, CURLOPT_REFERER, $send_url); // 偽装 REFERER
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $ cookie_file);
curl_setopt($ch, CURLOPT_POST, 1);
$contents =curl_exec($ch); ) ;
//Cookie ファイルを削除します

?>

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