web-dev-qa-db-ja.com

Pressflow DrupalサイトはユーザーCookieをどのように処理しますか?

これは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のドキュメントへ。

5
amateur barista

Cookie /セッションはDrupalとPHPの両方で処理されます。Drupalいくつかの関数を登録しますPHPが呼び出すと、 PHPは基本的なもののほとんどを処理し、Drupalはその一部を上書きして、ユーザーセッションをデータベースに保存します。

私はOmnitureに詳しくありませんが、それがGAのようなものである場合、ユーザーセッション/ Cookieはトラッキングにまったく影響しません。 Cookieはユーザーの識別に使用されるため、すべてのページでユーザー名/パスワードを入力する必要はありません。 Cookieがないと、Drupalはユーザーを区別できず、新しいページをロードするたびにログインするなど、他の形式の識別が必要になります。

これは、一部の人がcookieを盗もうとする理由です。これは、泥棒にフルアクセスが与えられた場合に、ユーザーがログインしてコンピューターを離れることと同じです。

3
googletorp

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に渡して、キャッシュページを提供する方法を見つけます。これは、まだ聞いたことがないものです。

1
amateur barista

本当の答えは、Google AnalyticsとOmnitureの両方が特定のCookie(Drupalが使用するCookieではない)を使用し、Drupalセッションとは完全に独立してトラッキングを実行することです。

PressflowでDrupal 7(および後でDrupal 6)にバックポートされた)によって導入された新しいセッションハンドラーは、GoogleアナリティクスまたはOmnitureのユーザー追跡に影響しません。

同じ理由で、VarnishでのCookieの削除は、ユーザーの追跡を妨げません。

0
Damien Tournoud

すべてのコンポーネントは、さまざまなレベルでユーザーCookieを処理します。

WebブラウザーはCookieを設定し、ドメインの基準と有効期限(HTTPヘッダーの一部として)に基づいて、Cookieが次のリクエストに渡されることを確認します。

DrupalはPHP( setcookie / session_destroy )が機能し、ユーザーを認証します。

Varnishは受信リクエストを解析し、ページをキャッシュするかどうかを決定します。これには、Drupalが知る必要のない他のすべてのCookieを保持、変更、または削除するロジックがある場合があります。ここに例を示しますワニスロジック(.vcl file config) configuring Drupal with Varnish の結果:

  1. Cookie文字列の前にセミコロンを追加します。
  2. セミコロンの後に表示されるすべてのスペースを削除します。
  3. 保持したいCookieを一致させ、以前に削除したスペースを追加します。 (\ 1)は、regsuballで最初に一致するグループです。
  4. 他のすべてのCookieを削除し、前のセミコロンの後にスペースがないことでそれらを識別します。
  5. Cookie文字列の最初と最後からすべてのスペースとセミコロンを削除します。
  6. Cookieが残っていない場合は、Cookieヘッダーを削除します。 Cookieヘッダーがない場合、Varnishのデフォルトの動作はページをキャッシュすることです。
0
kenorb