Как сайты Drupal Pressflow обрабатывают файлы cookie пользователей?


Этим занимается Drupal? Какие настройки PHP, Apache, Varnish влияют на файлы cookie?

Кроме того, в чем разница в обработке файлов cookie между обычным ванильным Drupal и Pressflow?

Я видел, что в drupal_session_commit()boostrap.inc вызывает session_destroy():

session_destroy() уничтожает все данные, связанные с текущим сеансом. Он не отменяет ни одну из глобальных переменных, связанных с сеансом, и не отменяет файл cookie сеанса. Чтобы снова использовать переменные сеанса, необходимо вызвать session_start().

Для того, чтобы полностью завершить сеанс, например, для выхода пользователя из системы, идентификатор сеанса также должен быть отключен. Если файл cookie используется для распространения идентификатора сеанса (поведение по умолчанию), то файл 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

Ссылка на документацию Pressflow.

 5
Author: kiamlaluno, 2011-03-28

4 answers

Файлы cookie/сеансы обрабатываются как Drupal, так и PHP. Drupal регистрирует некоторые функции, которые PHP будет вызывать, когда должны произойти определенные вещи, например, уничтожение сеанса пользователя. PHP обрабатывает большую часть основных функций, а Drupal переопределяет некоторые из них, сохраняя сеансы пользователей в базе данных.

Я не знаком с Omniture, но если это что-то вроде GA, сеанс пользователя/файл cookie вообще не повлияет на отслеживание. Файлы cookie используются для идентификации пользователя, поэтому им не нужно вводить свои имя пользователя/пароль на каждой странице. Без файлов cookie Drupal не смог бы отличать пользователей друг от друга и нуждался бы в какой-либо другой форме идентификации, такой как логин для каждой новой загрузки страницы.

Вот почему некоторые люди пытаются украсть файлы cookie, поскольку это то же самое, что заставить пользователя войти в систему и покинуть компьютер, предоставив вору полный доступ.

 3
Author: googletorp, 2011-03-29 09:03:32

1) Это то, чем занимается Drupal?

Drupal обрабатывает файлы cookie, но он обрабатывает только собственные файлы cookie от первого лица. Как сказал @googletorp, Omniture и Google Analytics используют свои собственные файлы cookie.

2) Какие настройки PHP влияют на файлы cookie?

drupal_session_initialize(), на boostrap.inc вызывает session_set_save_handler(), который переопределяет функции обработки сеансов PHP по умолчанию с помощью Drupal.

В Pressflow в конце каждой страницы вызывается drupal_page_footer(). Код показывает, что если пользователь является анонимным, Pressflow удаляет идентификатор текущего сеанса из базы данных и удаляет все файлы cookie, которые могли быть установлены. См. sess_destroy_sid() на session.inc.

3) Какие настройки лака влияют на файлы cookie?

Как Google Analytics, так и Omniture могут генерировать статистику посетителей без файлов cookie, поскольку статистика генерируется с использованием жестко запрограммированных запросов изображений (веб-маяков). Однако для отслеживания постоянной статистики (как часто пользователь x приходит на мой страницы), Компания Omniture выдает файл cookie с уникальным идентификатором пользователя - и, когда пользователь возвращается на страницу, он показывает мне, что файл cookie, и я могу сказать "ОК, X пользователь посетил меня во второй раз на этой неделе, и третий раз за месяц, и так далее". Это делается с помощью постоянных файлов cookie , которые представляют собой фактический файл, находящийся на компьютере пользователя.

Проблема с лаком заключается в том, что он обычно настроен на удаление файлов cookie из запроса, потому что если запрос поставляется с файлом cookie прикрепленный к нему, то Varnish не обслуживает кэшированную страницу. Поскольку Omniture устанавливает эти файлы cookie для каждого пользователя, это означает, что если вы не удалите файл cookie Omniture из запроса, Varnish никогда не будет обслуживать кэшированную страницу.

Таким образом, либо вы отслеживаете постоянную статистику, либо находите способ передать этот файл cookie через Varnish, и все же вам удается обслуживать кэшированную страницу, о чем я еще не слышал.

 1
Author: amateur barista, 2011-03-29 19:07:49

Реальный ответ заключается в том, что и Google Analytics, и Omniture используют определенные файлы cookie (не те файлы cookie, которые использует Drupal) и выполняют их отслеживание полностью независимо от сеансов Drupal.

Новый обработчик сеансов, представленный Drupal 7 (и позже перенесенный в Drupal 6) в Pressflow, не мешает ни Google Analytics, ни отслеживанию всех пользователей.

По тем же причинам удаление файлов cookie в лаке не мешает отслеживанию пользователей.

 0
Author: Damien Tournoud, 2011-03-29 21:10:18

Все компоненты обрабатывают пользовательские файлы cookie на разных уровнях.

Веб-браузеры устанавливают файлы cookie и следят за тем, чтобы они передавались следующим запросам на основе критериев доменов и даты истечения срока действия (как указано в заголовке HTTP).

Drupal считывает файлы cookie с помощью PHP (setcookie/session_destroy) функции и аутентификация пользователей.

Лак анализирует входящие запросы и решает, следует ли кэшировать страницу или нет, и у нее может быть логика для сохранения, изменения или удаления все остальные файлы cookie, о которых Drupal не нужно знать. Вот пример логики лака (в конфигурации файла .vcl) в результате настройки Drupal с помощью лака:

  1. Добавьте точку с запятой в начало строки cookie.
  2. Удалите все пробелы, которые появляются после точек с запятой.
  3. Сопоставьте файлы cookie, которые мы хотим сохранить, добавив место, которое мы удалили ранее вернулся. (\1) является первой соответствующей группой в регсубалле.
  4. Удалите все остальные файлы cookie, идентифицируя их по тому факту, что у них нет места после предыдущей точки с запятой.
  5. Удалите все пробелы и точки с запятой из начала и конца строки cookie.
  6. Если файлов cookie не осталось, удалите заголовок файла cookie. Если заголовков файлов cookie нет, по умолчанию Varnish будет кэшировать страницу.
 0
Author: kenorb, 2016-03-23 14:53:38