PhpBBセッションデータを使用するアプリケーション-短いコードは使用できません
-
07-07-2019 - |
質問
phpBBセッションとユーザーデータを利用する前に、Webアプリを構築しました。一般的な動きは、次のようなコードを使用することです:
define('IN_PHPBB', true);
//replace $phpbb_root_path with path to your forum
$phpbb_root_path = '../forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
ただし、 common.php
を含めることにより、他のメソッドのがらくたを持ち込んで、セットアップした他のメソッドに実行します。
この例では、CodeIgniterを使用してアプリケーションを実行していますが、これには既に「リダイレクト」があります。方法。この質問は、phpBBメソッドに実行される可能性のあるビルド済みのメソッドを持っているすべての人に当てはまります。
基本的に、私がする必要があるのは次のとおりです。
- ユーザーが
$ user-> data [username] == Anonymous
にログインしていることを確認します
- ユーザーのID、スクリーン名などの「$ user-> data」からのデータを利用する
$ user-> data
配列を取得して、どういうわけか自分のセッションに保存できますか?誰にもこれに関するアイデアがありますか?事前に感謝します!
解決
フレームの動作を嫌う主な理由に遭遇しました。 何が含まれているのかはわかりません。特にコードがオブジェクト指向ではない場合。 (関数がグローバルスペースに自由に浮動するよりもオブジェクトに属している場合は、はるかに優れています。)
コードに定義済みのセッションハンドラーが既に配置されていると仮定すると、通常のセッションコマンドの使用を妨げるものは何もありません。
eg: $ _SESSION ['user_data_array'] = $ user-> data;
その後、セッションデータの使用
$ data = $ _SESSION ['user_data_array'];
セッションハンドラが記述されると、現在のセッションハンドラが置き換えられます。 (セッションがサーバーではなくデータベースに保存されるように行われたと思います。)
置き換えられていない場合でも、PHPのデフォルトのセッションハンドラを使用できます。セッションの詳細は、現在のWebサーバー上のフォルダに保存されることに常に留意してください。したがって、アプリケーションが複数のサーバーで実行されている場合、ユーザーがその後のアクセスで別のサーバーからサービスを受けている場合、セッションデータは利用できません。 (したがって、複数のサーバー間でセッションデータを保持するためにセッションハンドラを記述する必要があります。)
他のヒント
phpBBは、データベースに保存されているパスワードを検証するアルゴリズムをバージョン2.xから3.0に変更しました。 (以前は単なるMD5関数でした。)しかし、セミSDKのURL(手元にない)を見つけることができる場合は、説明よりも高いレベルの抽象化でユーザー検証を使用する方法についての投稿があります。 。
これは、リソースをタップする場合、自分でやり直す必要がある場合です(この場合、以前よりも明確になります)。
どちらにしても危険な決定であることに同意します。特にphpBBには、設計品質に関して特に賞賛に値する記録がないためです。