web-dev-qa-db-ja.com

Drupalセッション変数とCookieの違いは何ですか?

Drupalセッション変数を設定する場合(つまり、「マジック」変数は次のように設定できます):

$_SESSION['mymodule'] = array('key' => 'value');

ユーザーがログアウトすると、値はなくなります。

クッキーを設定した場合、関数を使用して

user_cookie_save(array('key'=>'value'))

保存された値は、ユーザーセッションの間存続します。

ただし、2つの種類(つまり、Drupalセッション変数は単なるCookieですが、有効期間はセッションの期間に制限されています)かどうかは疑問です。

またはDrupalセッション変数notがセッションCookieを使用して実装されていますか?

5
Free Radical

これが2票あるのを見て、説明しようと思います。

Drupalは組み込みのPHPセッションメカニズムを使用しています。これは、当然のことながらCookieに基づいています。Cookie名はSESSの後に長い文字列が続き、その値は別の長い文字列です。 PHPはこのCookieを検出し、Drupalのセッション実装で使用できるようにします。デフォルトでは、ストレージにデータベーステーブルsessionsを使用し、Cookieの値をキーとして使用しますsid

セッションエントリは、ユーザーIDも記録します。Drupal bootstrapシーケンスの早い段階で、次に対応するユーザーオブジェクトが続きます。ユーザーの役割やその他の属性に基づいたリソースへのアクセス。

PHPグローバル配列$ _SESSIONに保存されたデータは、Drupalによってページリクエストの最後に自動的に現在のセッションのデータベースエントリに保存されます。これは通常使用されますアイテムなどの比較的一時的なデータをショッピングカートに保存します。

他のCookieはコード(JavaScriptを含む)で保存および取得でき、ログアウトが発生したときに削除するように特別に記述しない限り、ログアウトの影響を受けません。紛らわしいことに、有効期限が0のCookieは、「セッションCookie」とも呼ばれます。これらは、ブラウザーをシャットダウンすると削除されます。

言えることはもっとたくさんあります。機会があれば、良い参考文献をいくつか追加します。

5