異なる CMS (Drupal、Joomla など) で実行されているサイトがいくつかあります。これらのサイトで phpbb フォーラムを (別のドメインで) 共有し、各サイトに登録したユーザーがフォーラムでもユーザー アカウントを自動的に作成できるようにしたいと考えています。
そのために、php curl request
phpbb の登録プロセスを模倣した を送信するスクリプトを作成しました。
まず、簡単なサインアップ フォームにうんざりしていましたが、うまくいきました。しかし、フォーラムが使用Captcha
しているため、ユーザーがCaptcha string
. そして、ここで物事はうまくいきませんでした。コードファイルを何時間も調べた後phpbb
、問題が発生した場所を多かれ少なかれ指で突き止めることができましたが、phhbb の知識が限られているため解決策を見つけることができないため、ここで助けを求めることにしました.
私のスクリプトは、curl リクエストを送信しucp.php?mode=register
て画面を通過"agree to terms"
し、結果を解析してトークンと作成時間を取得してから、別のリクエストを送信します。戻り値はCaptcha画像付きの登録画面です。ただしurl
、画像スクリプトは相対的であるため、画像が表示されないため、出力結果を変更してurl
anを作成しabsolute url
ます。
だから代わりに
./ucp.php?mode=confirm&confirm_id=xxxxxxxxxxxxx&type=1
コードを次のように変更します
http://www.mydomain.com/phpbb3/ucp.php?mode=confirm&confirm_id=xxxxxxxxxxxx&type=1
そして、Captcha 画像を取得します (xxxxxxxxxxxxx
はconfirm_id string
毎回変更されます)。
そして、ここで壁にぶち当たりました。生成された画像は決して正しいキャプチャ文字列ではありません。
変数の場合var_dump
、Captcha 画像の文字列ではない正しい文字列を確認できます。舞台裏で何が起こっているのかを理解するのに役立つように、特定の変数を出力するコードをファイルに入れました。誰かがなぜそれが起こっているのかを教えてくれるか、少なくとも正しい方向に向けてくれることを期待して、私がなんとか集めたものを以下に示します。$captcha
ucp_register.php
phpbb
- で
captcha_abstract.php
、captcha_gd.php
は変数です$this->confirm_code
。$captcha var
どちらの場合も、これをファイルにダンプすると、正しいキャプチャ コードが表示されます ( inを出力した場合と同じですucp_register.php
)。 - キャプチャ画像を出力するときに表示される文字列を保持していることが判明し
ucp_confirm.php
たvarがあります。$captcha->code
$this->confirm_code
ブラウザを介して通常どおり登録プロセスを実行すると$captcha->code
、同じ値が保持されます。
したがって、上記の行を変更するucp.php?mode=confirm
とこれが発生することは明らかですが、そうしないとキャプチャ画像が取得されないため、回避できません。