ВопросCOOKIE для анонимных пользователей

Есть модуль:

function my_module_menu(){
  $items['any_page'] = array(
    'title' => '',
    'access callback' => TRUE,
    'page callback' => 'my_module_func',
    'page arguments' => array(1,),
    'type' => MENU_SUGGESTED_ITEM,
  );
  $items['show_result'] = array(
    'title' => '',
    'access callback' => TRUE,
    'page callback' => 'my_module_show',
  );
  return $items;
}
function my_module_func($_arg = 0){
  if($_arg) {
    setcookie('mark', $_arg, 0x7FFFFFFF, '/');
  }
  drupal_goto('show_result');
}
 
function my_module_show(){
  $out = 0;
  if (isset($_COOKIE['mark'])) {
    $out = $_COOKIE['mark'];
  }
  return $out;
}

Открываю в трех браузерах, в одном логинюсь, в двух других нет.

Допустим,
Chrome - залогиненый.
Safari и Opera - не залогиненые.

В Chrome перехожу на страницу my_site.dev/any_page/100.
Соответственно, на странице my_site.dev/show_result вижу:
В Chrome отображается 100.
Safari 0
Opera 0

В Safari перехожу на страницу my_site.dev/any_page/200
Обновляю все три.
Chrome 100.
Safari 200
Opera 200..

То есть, я понимаю, что cookie записываются для анонимов одинаковые.
Как записать их индивидуально?

Комментарии

Аватар пользователя Spleshka
Spleshka написал:

Куки записываются для каждого браузера отдельно. Просто вы пишете в куки для анонимов одно и то же число. Попробуйте заменить 200 на rand(1, 1000); и увидите сами.

13.11.2013 20:23
Аватар пользователя npoxop
npoxop написал:

Я знаю, что куки записываются в браузере и должны быть индивидуальны), но похоже drupal их каждый раз переписывает вытаскивая из какой-то своей таблицы. Если вы внимательно посмотрите в мой пример, то увидите, что куки "200" я записываю на странице my_site.dev/any_page/200, а смотрю их на странице my_site.dev/show_result. Браузером Opera я вообще не захожу на страницу где устанавливаются куки, однако они появляются на странице результата. Вопрос заключался именно в этом, как добиться стандартного поведения куков используя drupal).

14.11.2013 11:04
Аватар пользователя Spleshka
Spleshka написал:

Друпал нигде не хранит куки, это 100%. Он хранит только пользовательские сессии.
Посмотрите в куки оперы, возможно, они просто берутся из одного хранилища. Я не очень в курсе как распределяются куки между браузерами в ОС, но это точно не нюанс Друпала.

15.11.2013 01:17
Аватар пользователя npoxop
npoxop написал:

Нет, браузеры никак не связаны друг с другом. Для чистоты эксперимента открывал на разных машинах, всё работает так же. Подозреваю, что drupal хранит сессии в куках, называет их "пользовательские сессии" и хранит это в БД. Я не хочу обременять вас, но если вам не лень, попробуйте сами создать такой модуль и убедитесь, что всё так, как я описываю.

15.11.2013 09:55
Аватар пользователя Spleshka
Spleshka написал:

Друпал не хранит сессии в куках, только id сессии. А сами данные сессии по умолчанию хранятся в бд.

15.11.2013 10:07
Аватар пользователя Spleshka
Spleshka написал:

Обращаю ваше внимание, что седьмой Друпал по дефолту не создаёт сессии для анонимов вообще.

15.11.2013 10:07
Аватар пользователя Михаил
Михаил написал:

А как включить создание сессий для анонимных пользователей в друпале 7??

12.12.2013 15:09
Аватар пользователя медик
медик написал:

у меня такая же проблема когда кеширование для анонимов включено

30.12.2013 15:45

Комментировать