32

$_SESSION配列がどのように機能するのか疑問に思っています。自分のサイトを使用しているユーザーが多い場合、ユーザーごとにサブアレイを設定する必要がありますか?たとえば今私は持っています

$_SESSION['userid'] = $userid;
$_SESSION['sessionid'] = $sessionid;
$_SESSION['ipaddress'] = $ipaddress;

しかし、より多くのユーザーに対応するには、多次元配列を作成する必要がありますか?

$_SESSION[$userid]['sessionid'] = $sessionid;
$_SESSION[$userid]['ipaddress'] = $ipaddress;

$ _SESSIONグローバルはクライアントごとに処理されますか、それとも全体的に処理されますか?ログイン時に$_SESSION['userid']を設定すると、前のユーザーが追い出され、最後にログインしたユーザーが元に戻りますか?

4

2 に答える 2

57

いいえ$_SESSION。ユーザーごとに個別に作成されます。これはすべてサーバーによって行われるので、心配する必要はありません。コードを書くとき$_SESSIONは、サイトにユーザーが1人しかいないかのように扱ってください。

編集:実際、それについて考えると、質問するのは非常に良い質問です。この種の質問をするのは良いことです。つまり、コードが実際にどのように機能するかを真剣に考えているということです。これらのことを尋ね続け、テストを続けてください。いつかあなたは素晴らしいコードを書くことになると思います。

そのため、 apacheサイトからの情報は次のとおりです。

セッションとは何ですか?

セッションインターフェイスの中核には、ブラウザのリクエスト間でアクセスできるようになるキーと値のペアのテーブルがあります。これらのペアは、セッションを利用するアプリケーションの必要に応じて、任意の有効な文字列に設定できます。

サーバー上でセッションを維持する

Apacheは、特定のサーバーまたはサーバーのグループに保存されているユーザーごとのセッションを追跡するように構成できます。この機能は、一般的なアプリケーションサーバーで利用できるセッションに似ています。

構成されている場合、セッションは、Cookie内に格納されている、または一般的なGET要求に見られるように、URLクエリ文字列内に埋め込まれているパラメーターから抽出されたセッションIDを使用して追跡されます。

そして、セッションに関するPHPドキュメントから:

PHPでのセッションサポートは、後続のアクセス間で特定のデータを保持する方法で構成されています。これにより、よりカスタマイズされたアプリケーションを構築し、Webサイトの魅力を高めることができます。

Webサイトにアクセスする訪問者には、一意のID、いわゆるセッションIDが割り当てられます。これは、ユーザー側のCookieに保存されるか、URLで伝播されます。

セッションサポートにより、リクエスト間のデータを$_SESSIONスーパーグローバル配列に格納できます。訪問者がサイトにアクセスすると、PHPは自動的に(session.auto_startが1に設定されている場合)、または要求に応じて(明示的にsession_start()または暗黙的にsession_register()を介して)特定のセッションIDが要求とともに送信されたかどうかを確認します。この場合、以前に保存された環境が再作成されます。

于 2012-08-13T09:23:42.080 に答える