これはDrupalによって処理されますか? PHP、Apache、Varnishのどの設定がCookieに影響しますか?
さらに、plain-Vanilla DrupalとPressflowの間のCookie処理の違いは何ですか?
drupal_session_commit()
boostrap.incが session_destroy() を呼び出すことを確認しました:
session_destroy()
は、現在のセッションに関連付けられているすべてのデータを破棄します。セッションに関連付けられているグローバル変数の設定を解除したり、セッションCookieの設定を解除したりすることはありません。セッション変数を再び使用するには、session_start()
を呼び出す必要があります。ユーザーをログアウトさせるなど、セッションを完全に強制終了するには、セッションIDも設定解除する必要があります。 Cookieを使用してセッションIDを伝達する場合(デフォルトの動作)、セッションCookieを削除する必要があります。
setcookie()
を使用できます。
どうやらPressflowではdrupal_session_commit()が次のようにすべてのページで呼び出されます:
// Perform end-of-request tasks on every page.
drupal_page_footer(), common.inc
// Write the session, and open one if needed.
drupal_session_commit(), bootstrap.inc
// If our user is anonymous, Pressflow "Destroys empty anonymous sessions"
// Destroy all data registered to a session
session_destroy();
// Called by PHP session handling with the PHP session ID to end a user's session.
sess_destroy_sid($sid), session.inc
これは、OmnitureやGoogle Analyticsなどのソフトウェアでのユーザー追跡にどのような影響がありますか?
ここでCookieの関連記事を参照してください: https://stackoverflow.com/questions/871283/how-do-tracking-cookies-work
Link からPressflowのドキュメントへ。
Cookie /セッションはDrupalとPHPの両方で処理されます。Drupalいくつかの関数を登録しますPHPが呼び出すと、 PHPは基本的なもののほとんどを処理し、Drupalはその一部を上書きして、ユーザーセッションをデータベースに保存します。
私はOmnitureに詳しくありませんが、それがGAのようなものである場合、ユーザーセッション/ Cookieはトラッキングにまったく影響しません。 Cookieはユーザーの識別に使用されるため、すべてのページでユーザー名/パスワードを入力する必要はありません。 Cookieがないと、Drupalはユーザーを区別できず、新しいページをロードするたびにログインするなど、他の形式の識別が必要になります。
これは、一部の人がcookieを盗もうとする理由です。これは、泥棒にフルアクセスが与えられた場合に、ユーザーがログインしてコンピューターを離れることと同じです。
1)これはDrupalによって処理されますか?
DrupalはCookieを処理しますが、独自のファーストパーティCookieのみを処理します。 @googletorpが言ったように、OmnitureとGoogle Analyticsは独自のCookieを使用します。
2)何PHP設定はCookieに影響しますか?
boostrap.incのdrupal_session_initialize()
はsession_set_save_handler()
を呼び出します。これは、PHPのデフォルトのセッション処理機能をDrupalでオーバーライドします。
Pressflowでは、各ページの最後にdrupal_page_footer()
が呼び出されます。このコードは、ユーザーが匿名の場合、Pressflowが現在のセッションIDをデータベースから削除し、設定された可能性のあるCookieをすべて空にすることを示しています。 session.incのsess_destroy_sid()
を参照してください。
)どのワニス設定がCookieに影響しますか?
GoogleアナリティクスとOmnitureのどちらも、統計がハードコードされた画像リクエスト(ウェブビーコン)を使用して生成されるため、Cookieなしで訪問者の統計を生成できます。ただし、永続的な統計(xユーザーが自分のページにアクセスする頻度)を追跡するために、Omnitureは一意のユーザーIDを使用してCookieを発行します-そして、そのユーザーが私のページに戻ってくると、彼はそのcookieを私に提示し、「OK、ユーザーxが今週2回目、今月3回目などに来た」と言うことができます。これは永続的なcookieを使用して行われます。これはユーザーのコンピューターにある実際のファイルです。
Varnishの問題は、通常、リクエストからCookieを取り除くように設定されていることですリクエストにCookieが添付されている場合、Varnishはキャッシュされたページを提供しません。 Omnitureはすべてのユーザーに対してこれらのCookieを設定するため、リクエストからOmniture Cookieを削除しないと、Varnishがキャッシュページを提供することはありません。
つまり、永続的な統計を追跡するか、そのCookieをVarnishに渡して、キャッシュページを提供する方法を見つけます。これは、まだ聞いたことがないものです。
本当の答えは、Google AnalyticsとOmnitureの両方が特定のCookie(Drupalが使用するCookieではない)を使用し、Drupalセッションとは完全に独立してトラッキングを実行することです。
PressflowでDrupal 7(および後でDrupal 6)にバックポートされた)によって導入された新しいセッションハンドラーは、GoogleアナリティクスまたはOmnitureのユーザー追跡に影響しません。
同じ理由で、VarnishでのCookieの削除は、ユーザーの追跡を妨げません。
すべてのコンポーネントは、さまざまなレベルでユーザーCookieを処理します。
WebブラウザーはCookieを設定し、ドメインの基準と有効期限(HTTPヘッダーの一部として)に基づいて、Cookieが次のリクエストに渡されることを確認します。
DrupalはPHP( setcookie
/ session_destroy
)が機能し、ユーザーを認証します。
Varnishは受信リクエストを解析し、ページをキャッシュするかどうかを決定します。これには、Drupalが知る必要のない他のすべてのCookieを保持、変更、または削除するロジックがある場合があります。ここに例を示しますワニスロジック(.vcl
file config) configuring Drupal with Varnish の結果:
- Cookie文字列の前にセミコロンを追加します。
- セミコロンの後に表示されるすべてのスペースを削除します。
- 保持したいCookieを一致させ、以前に削除したスペースを追加します。 (\ 1)は、regsuballで最初に一致するグループです。
- 他のすべてのCookieを削除し、前のセミコロンの後にスペースがないことでそれらを識別します。
- Cookie文字列の最初と最後からすべてのスペースとセミコロンを削除します。
- Cookieが残っていない場合は、Cookieヘッダーを削除します。 Cookieヘッダーがない場合、Varnishのデフォルトの動作はページをキャッシュすることです。