1

以前、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 メソッドに実行される可能性のあるビルド済みのメソッドを持っているすべての人に適用されます。

基本的に、私がする必要があるのは次のとおりです。

  1. ユーザーがログインしていることを確認します$user->data[username] == Anonymous
  2. ユーザーのID、スクリーンネームなど、「$user->data」からのデータを利用します。

配列を取得して$user->data、どうにかして自分のセッションに保存できますか? 誰かがこれについて何か考えを持っていますか? 前もって感謝します!

4

2 に答える 2

1

フレームワークが嫌いな主な理由に遭遇しました。何が含まれているかわかりません。特にコードがオブジェクト指向でない場合。(関数がグローバル空間で自由に浮遊するのではなく、オブジェクトに属している場合ははるかに優れています。)

コードに定義済みのセッション ハンドラーが既に配置されていると仮定すると、通常のセッション コマンドの使用を妨げるものは何もありません。

例: $_SESSION['user_data_array'] = $user->data ;

その後、セッションデータを使用して

$data = $_SESSION['user_data_array'];

セッション ハンドラが作成されると、現在のセッション ハンドラが置き換えられます。(セッションがサーバーではなくデータベースに保存されるように、これが行われたと思います。)

置き換えられていない場合でも、PHP のデフォルトのセッション ハンドラを引き続き使用できます。セッションの詳細は、現在の Web サーバのフォルダに保存されることに常に注意してください。そのため、アプリケーションが複数のサーバーで実行されている場合、ユーザーがその後の訪問で別のサーバーからサービスを受けている場合、セッション データは利用できません。(したがって、複数のサーバー間でセッション データを保持するためにセッション ハンドラーを作成する必要があります。)

于 2008-11-10T23:40:49.293 に答える
1

phpBB は、データベースに保存されているパスワードを検証するためのアルゴリズムをバージョン 2.x から 3.0 に変更しました。(以前は単なるMD5関数でした。)しかし、セミSDKのURLを見つけることができれば(手元にありません)、説明よりも高い抽象レベルでユーザー検証を使用する方法についての投稿があります。 .

これは、彼らのリソースをタップする場合、彼らのやり方でそれを行う必要があるケースです (この場合、以前よりも明確になっています)。

どちらにせよ危険な決定であることには同意します。特に、phpBB はデザインの品質に関して特に称賛に値する記録を持っていないためです。

于 2008-11-10T23:47:31.697 に答える