Смена региона и COOKIE

kuzmich

Всем привет.

Столкнулся такой темой как смена региона и сохранение в COOKIE.
Сделал следующий год:

Код (Text):
  1.  if (!isset($_COOKIE[‘region’])) {
  2. $city = $_POST[‘region’];
  3. $time = time() + 300;
  4. setcookie(«region»,$city,$time,»/»);}
  5. if (!isset($_COOKIE[‘region’])) {
  6. echo «
  7. <form action=» method=’post’>Ваш регион: <select class=»region_select» name=»region» onchange=»this.form.submit()»>
  8. <option value=»»>Весь Казахстан</option>
  9. <option value=»Актобе»>Актобе</option>
  10. <option value=»Алматы»>Алматы</option>
  11. </select></form>
  12. «;}
  13. else {
  14. echo «
  15. <form action=» method=’post’>Ваш регион: <select class=»region_select» name=»region» onchange=»this.form.submit()»>
  16. <option value=»»>».$_COOKIE[‘region’].»</option>
  17. <option value=»»>Весь Казахстан</option>
  18. <option value=»Актобе»>Актобе</option>
  19. <option value=»Алматы»>Алматы</option>
  20. </select></form>
  21. «;
  22. }

Теперь тут два момента:
1. При выборе Актобе или Алматы, страница как бы перезагружается но попрежнему стоит — Весь Казахстан, а после обновления — появляется тот город который я выбрал.

2. Допустим я выбрал город Актобе и все отлично — я в нем работаю, а потом решил посмотреть какие данные в Алматы — выбираю Алматы и по-прежнему стоит Актобе. как правильно очистить cookie и выбрать другой город

 

ADSoft

вообще все не так)))))
1. откройте для cебя свойство selected для <option>
2. логика — бред, куки надо новые ставить лишь в том случае — когда пришел POST запрос с указанием города, а не каждый раз — когда нет кук
3. не надо 10 форм. все делать в одной — как — см п 1.

 

Drunkenmunky

Проверить $_POST[‘region’], если есть, то установить $_COOKIE[‘region’]
Если нет, то установить $city в $_COOKIE[‘region’], если она есть. Если нет, то в дефолтное значение

 

kuzmich

а можно теперь на русском объяснить? совсем запутался
— Добавлено —

а можно пример? а то чет догнать не могу

 

Drunkenmunky

PHP:
  1. <?php
  2.  
  3. if(isset($_POST[‘region’]))
  4. {
  5. $city = $_POST[‘region’]; //предварительно обработать, проверить
  6. //записать в куки
  7. }
  8. else
  9. {
  10. $city = (isset($_COOKIE[‘region’])) ? $_COOKIE[‘region’] : ‘default’;
  11. // не забывать, что $_COOKIE приходит от пользователя, всё проверять
  12. }
  13.  
  14. echo $city;
  15. ?>
 

boss1

есть пакеты , которые позволяют выбрать регион и регион по умолчанию

 

MouseZver

PHP 7.4.0 в одну строчку:

PHP:
  1. echo $_POST[‘region’] ?? $_COOKIE[‘region’] ?? ‘default’;
 

Drunkenmunky

Выигрыш в чем?

 

roboformation

В размере и понимании

 

Drunkenmunky

Ммм. Бессмерное «патамушта».

 

roboformation

Одно дело — посмотреть на одну строку и осознать её, другое дело — несколько строк

 

Drunkenmunky

Я запишу.

 

roboformation

:cool:

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *