3

私は少し前にこれを調べましたが、それは私にはかなりあいまいでした。これを使用するときに、セッションに関する次のことが正しいかどうかを知りたいです。$_SESSION['username'] = "pete";

  • $_SESSIONサーバー上でのみ変更できるグローバル変数です
  • $_SESSION['username']宣言されると、クライアント側で Cookie が設定されます
  • つまり、クライアントはデータを表示できますが、編集することはできません
  • $_SESSION['username']宣言されると、サーバー側でも Cookie が設定されます

3 番目のステートメントが true の場合、ログインすると、内部にユーザー名が含まれる Cookie が見つからないのはなぜですか? セッション Cookie は見つかりましたが、次のようなコードが含まれていますtkcsq66lucpra9m7j3ogqol5h7。今ではあまりない名前ですよね?

4

3 に答える 3

15

$_SESSIONサーバー上でのみ変更できるグローバル変数です

これは超グローバルですが、スクリプトの実行の間に保存されたデータが取り込まれます。

$_SESSION['username']宣言されると、クライアント側で Cookie が設定されます

いいえ。セッションの開始時に Cookie が作成されます (設定が変更されていない場合)。

つまり、クライアントはデータを表示できますが、編集することはできません

いいえ。Cookie にはデータではなくセッション ID が含まれます

$_SESSION['username']宣言されると、サーバー側でも Cookie が設定されます

Cookie はクライアントにのみ保存されます。データはサーバーに保存され、ブラウザに送信される Cookie に保存されている識別子に関連付けられます。

3 番目のステートメントが true の場合、ログインすると、内部にユーザー名が含まれる Cookie が見つからないのはなぜですか?

それは真実ではありません。

セッション Cookie は見つかりましたが、tkcsq66lucpra9m7j3ogqol5h7 のようなコードが含まれています。

それが識別子です。

(PHP の組み込みライブラリを使用する代わりに) 自分でセッション システムを構築している場合は、次のようなものをデータベースに格納できます。

session                     key       value
tkcsq66lucpra9m7j3ogqol5h7  username  pete

セッション ライブラリは、セッションが開始されたときにデータを取り込むことができ、その中$_SESSION"username" => "pete"Cookie を受け取りsessionId=tkcsq66lucpra9m7j3ogqol5h7ます。

PHP のビルトイン システムは、それほど安価で厄介なものではありません (また、透過的に実行されるため、実装の詳細について心配する必要はありません)。

于 2013-01-04T22:47:56.117 に答える
0

Cookie 内のこの文字列「tkcsq66lucpra9m7j3ogqol5h7」がセッション ID です。すべての$_SESSIONデータはサーバーのみがアクセスできます。

于 2013-01-04T22:49:13.823 に答える
0

クライアント側の Cookie は、セッションの保存に使用されているストレージ メカニズムにあるサーバー側のセッションの内容への参照です。

したがって、セッション設定がセッション データをファイルに保存する場合、サーバーのどこかに、セッション データを含む tkcsq66lucpra9m7j3ogqol5h7 という名前のファイルがあります (または、セッション データに memcached を使用する場合、そのセッション キーを持つ memcached キーがあります)。 )。

于 2013-01-04T22:51:29.680 に答える