Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: куки
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » куки

Страниц (1): [1]
 

1. romanov89 - 11 Августа, 2014 - 17:18:34 - перейти к сообщению
Здравствуйте, подскажите как правильно реализовать выбор региона на сайте, надо было сделать если пол-ль заходил на сайт и выбрал свой город , то при последующих заходах он будет перенаправлен на домен своего региона, я сделал так что город который он выбрал сохраняется в куки, т.е адрес сохраняется домена на который он будет послан хранится в куки , я устанавливаю куки в коде и после получаю куки он мне выдает другой адрес
PHP:
скопировать код в буфер обмена
  1.  
  2. $APPLICATION->set_cookie("redirect_to", "http://".$element["CODE"].".daikin-russia.su", time()+60*60*24*30*12*2);
  3. $redirect_to = $APPLICATION->get_cookie("redirect_to");
  4. // $redirect_to выдает другой адрес не тот который установил выше при помощи $APPLICATION->setcookie();
  5.  
2. Tyoma5891 - 12 Августа, 2014 - 08:55:56 - перейти к сообщению
а что и откуда приходит в $element["CODE"]
и вообще на куках не делают такое лучше на бд, потому как куки устанавливаются один раз и потом пользуемся , а у Вас процесс постоянно перезаписывающий куки
3. Ts.Saltan - 12 Августа, 2014 - 10:03:18 - перейти к сообщению
Tyoma5891 пишет:
и вообще на куках не делают такое лучше на бд

А если пользователь не зарегистрирован? Как раз таки лучше на куках.

romanov89, это особенность работы с куками. Если через php установить куки, то видны они будут только при последующем обращении к скрипту.

Попробуйте запустить скрипт, потом обновить страницу.

PHP:
скопировать код в буфер обмена
  1.  
  2. if(!isset($_COOKIE["test"])){
  3.  setcookie("test","asd");
  4. }
  5.  
  6. var_dump($_COOKIE);
  7.  
4. romanov - 12 Августа, 2014 - 10:13:23 - перейти к сообщению
В БД тут хранить не получится у нас без регистрации , $element["CODE"], это символьный код раздела ( города ) из БД.

Короче куки привязывались к доменам и механизм работал неправильно надо было указать в параметре функции главный домен сайта
5. esterio - 12 Августа, 2014 - 10:55:43 - перейти к сообщению
указиваем домен не главный а .domain.com (тоесть точка в начале). что означает доступ до кукы ка с главного домена так и с всех поддоменов. в куке лучше не хранить редирект, а код который находиться в переменной $element["CODE"]. тогда просто проверяем этот код з поддоменом на который зашел пользователь и если они отличаються, то делаем редирект. Теперь обьясн юпочему так: так больше контроля ибо вы знаете конкретно который регион выбрал пользователь, а делать редирект или что-то другое можно прямо в скрипте не заморачиваясь. еще если пользователь залогинился или имеет сессию на основоном домене, то он должен ее иметь на всех поддоменах
6. romanov - 12 Августа, 2014 - 11:05:39 - перейти к сообщению
esterio , спасибо за совет с .domain.com, у меня такой же алгоритм с редиректом, только у меня $element["CODE"] доступен когда пользователь город выбрал.
Редирект происходит так

PHP:
скопировать код в буфер обмена
  1.  
  2. $redirect_to = $APPLICATION->get_cookie("redirect_to");
  3. if ( !empty($redirect_to ) && "http://".$_SERVER["HTTP_HOST"] != $redirect_to && empty($_REQUEST["city_id"]) ){
  4.         LocalRedirect($redirect_to);
  5. }
  6.  


Плюс пока не дают мне вам поставить, просто респект
(Добавление)
Вопрос еще такой, у меня есть база с городами, если информацию по городам которую надо вывести на сайте хранить тоже в куки это нормально ?
7. esterio - 12 Августа, 2014 - 11:45:00 - перейти к сообщению
нет, кукы ограничены в размере. вы забьете все кукы инфой о регионах. плюс ко всему они будут нагружать канал связи, так ка будут присутствувать в кажом запросе в заголовках.

 

Powered by ExBB FM 1.0 RC1