Смена региона и 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 не будет опубликован. Обязательные поля помечены *