0

ほとんどのページでセッションを使用していますが、PDO に切り替えており、すべてのページの開始時に session_start() を呼び出すと、ヘッダーの受け渡しで問題が発生します。私は数時間の調査を行いましたが、それについて何をすべきかまだ不明です.

編集 - 私がやっていること:サインアップ/サインイン ドキュメントと auth.phpsession_start();の最初の行は であり、サインアップ/サインイン後にユーザーがアクセスするすべてのページの最初の行はrequire_once('auth.php');

現在、$_SESSION['SESS_USER_ID'] を使用してすべてのページにユーザー ID を渡しています

彼らがサインアップ/サインインするとき、私は次のように接続します: $member = $stmt_user->fetch(); $_SESSION['SESS_USER_ID'] = $member['user_id'];

そして、後続のすべてのページで、次のように呼び出します。

$user_id = $_SESSION['SESS_USER_ID']; 

説明書通り

PHP 4.3.3 以降、セッションが以前に開始された後に session_start() を呼び出すと、レベル E_NOTICE のエラーが発生します。また、2 回目のセッション開始は単純に無視されます。

これは、すべてのページで呼び出す必要がなくなり、ユーザーがセッションを開始したときに一度だけ呼び出すことができるということですか?

そうでない場合、この問題に対処する最も簡単な方法は何ですか?

4

3 に答える 3

1

フレームワークを使用している場合は、そのフレームワークで 1 回呼び出すだけで済みます。各リクエストが異なる php ページに送られる場合は、リクエストごとに少なくとも 1 回 (できればできるだけ早く) 呼び出されるようにする必要があります。

于 2013-01-23T19:28:38.330 に答える
0

自分でブートストラップ ファイルを作成する必要があります。
すべてのページで実行されるすべての一般的な操作 (セッションの開始、データベースへの接続、グローバル変数の設定など)
を含むファイル。次に、呼び出されるすべてのスクリプトにこのファイルを含めます。
したがって、必要なものがすべて揃っていることを確認できますが、すべてを 1 回呼び出すだけです。

この質問がPDO(および以前のもの)とどう関係するのかわかりませんが。
PDO は単なるデータベース ドライバーであり、ヘッダーやセッションなどとはまったく関係ありません。

于 2013-01-23T19:47:38.890 に答える
-1

とを使用ob_startob_end_flushて出力をバッファリングできるため、実際にこれを行うことができます。

<?php
ob_start();
echo '42';
session_start(); // still works because output is buffered
ob_end_flush();
?>
于 2013-01-23T19:38:24.463 に答える