3

ユーザーが長時間ログインしたままになることを決して望んでいないので、「記憶」機能の使用は見たことがありません。しかし、それがどのように行われるかについて考え始めたので、明確にしたいと思います。

現在、セッションをデータベースに保存しています。いつも当惑していたのは、Cookie を明示的に設定していなくても、ブラウザに Cookie が配置される方法でした。セッションはセッションであり、Cookie は Cookie であるため、少し混乱しています。セッションが Cookie を設定する方法がわかりません。

また、セッション配列に別のセッション変数を設定して、ユーザーのログイン状態を維持するだけで十分か、それとも Cookie を設定する必要があるかどうかも知りたいです。

4

4 に答える 4

4

データベースからセッション データを取得するには、キーが必要です。これをセッション ID と呼びます。

セッション ID はどこかに保存する必要があります。クライアントがポストバックする URL 文字列の一部として、またはより一般的にはクライアントの Cookie に含まれます。リクエストが送信されると、セッションは Cookie から値を読み取り、セッション ストレージからどのレコードを取得するかを認識します。

これは自動的に行われます。

セッションを使用する唯一の理由は、保持したいデータが 4KB を超える場合です (ブラウザーの制限)。または、サーバーからデータをプルするのに必要な時間が、セッション ストレージからデータを読み取るよりも長い場合。

保存しているデータ量が 4KB 未満の場合は、最初から Cookie に設定することを強くお勧めします。私は通常、ユーザー ID、ユーザー名、およびその他のいくつかの属性などを保存します。Cookie の値を検査するのは簡単なことなので、この情報はクライアントに送信する前に暗号化する必要があることに注意してください。

別のことは、元のソースから必要なデータをプルするクエリ時間が短い場合は、セッションに配置する代わりにそれを行うことを選択することです。そうすれば、ページが読み込まれるたびにではなく、実際に必要なときにのみ取得できます。

于 2010-02-04T15:14:39.557 に答える
2

いつも当惑していたのは、Cookie を明示的に設定していなくても、ブラウザに Cookie が配置される方法でした。

セッション ハンドラーは、どのセッションがどのユーザーに属しているかを識別する必要があります。

ほとんどのセッション ライブラリは、Cookie を設定することによってこれを行います。

(Is) セッション配列に別のセッション変数を設定して、ユーザーのログイン状態を維持するだけで十分ですか、それとも Cookie を設定する必要がありますか?

ほとんどのセッション ライブラリはセッション Cookieを設定します。これらは有効期限が指定されていない Cookie です。それらはブラウザーが閉じると期限切れになり、「Remember Me」機能を実装するには不十分です (ブラウザーの再起動後も保持されることが期待されるため、明示的な有効期限が必要です)。

于 2010-02-04T15:16:24.433 に答える
0

Cookie とセッションの関係を説明します。

PHP は Cookie を使用して、各ユーザーのセッションを一意に識別します。サーバーからファイルを要求するたびに Cookie が送信されるため、これがより信頼性の高い唯一の方法です。セッション識別子でもある Cookie のトークンを使用して、PHP は tmp ディレクトリを検索し、セッションが存在するかどうかを確認します。セッションが存在する場合、変数は正しいファイルからロードされ、そのセッションで変数にアクセスできるようになります。

したがって、Cookie には、どのユーザーがどのセッションを使用するかを識別するために必要なセッション ID が保存されます。これは、ユーザーがセッション識別 Cookie を変更して別のユーザーのセッション ID を使用できる場合に、セッション ハイジャックが発生する方法でもあります。

于 2010-02-04T15:16:52.343 に答える
0

基礎となる PHP セッションの実装によって Cookie が設定されます。これを変更して、セッション ID 値をクエリ文字列に渡すこともできますが、お勧めしません。Cookie は使用しませんが、PHP は使用します。Cookie に保存されているセッション ID 値を参照して、セッション データのルックアップを実行します。

また、セッション配列に別のセッション変数を設定してユーザーのログインを維持するだけで十分なのか、それとも Cookie を設定する必要があるのか​​についても知りたいです。

ユーザーがブラウザーを閉じるとすぐに、セッションが強制終了され、Cookie が削除されます。セッション値を永続化するためのメカニズムが終了するとは思いませんが、それには正当な理由があります。

于 2010-02-04T15:17:16.790 に答える