brilliantmaksim
@brilliantmaksim
Верстала

Простейшая работа с cookie?

Всем привет. Подскажите пожалуйста.
Перерыл весь интернет и везде полно мусора. Мне нужна самая простая работа с куки. Что я хочу сделать.
У меня есть простенький сайт и на нем выбор города. Я хочу при выборе города, чтобы менялись номера телефонов и адреса.

Мне бы самый элементарный способ записи человеку по клику на город запись в куки и за счет этих кук использовалось бы условие какое-то аля if, else.

Нужно записать куки и к примеру вставить их в input по имени. Яб уже дальше разобрался. Начинаю читать в интернете, там статьи на тысячи строк, куча фильтров и алгоритмов и т.п. ненужного. Мне б чет вроде

document.cookie = 'name=msk';
document.cookie = 'name=spb';

знаю что оно перезаписывает друг друга. К примеру, человек нажал на москву и в куках написалось "msk"
соответственно, он заходит на страницу контакты и там в условиях if выдавались бы нужные ему контакты. Как это самым простым способом реализовать и не писать код на 50 строк?
Спасибо!
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 1
Snova_s_vami
@Snova_s_vami
JavaScript ES5-8, TypeScript, Angular
Ой, случайно раньше написания полного ответа отправил. В общем, на вордпрессе недавно делал, суть простая, проверяем в PHP значение куки вот так и записываем в какую-то переменную подходящее значение на основе значения куки. Ничего сложного.
$default_phone = get_theme_mod('phone_default'); 
$moscow_phone = get_theme_mod('phone_moscow');
$spb_phone = get_theme_mod('phone_spb');
$voronezh_phone = get_theme_mod('phone_voronezh');

$user_region = in_array('uLocation', $_COOKIE) ? $_COOKIE['uLocation'] : null;
$active_phone = null;

if ($user_region) {
    if ($user_region === 'Москва' && $moscow_phone) $active_phone = $moscow_phone;
    else if ($user_region === 'Санкт-Петербург' && $spb_phone) $active_phone = $spb_phone;
    else if ($user_region === 'Воронежская' && $voronezh_phone) $active_phone = $voronezh_phone;
    else $active_phone = $default_phone;
} else {
    $active_phone = $default_phone;
}


В плане скрипта который создает куку, у меня пара проверок, по IP была проверка города и установка региона с помощью DDATA, в вашем случае, как я понял, всё проще, но суть такая, записываете куку, но не забывайте о проверках, что она уже установлена, чтобы не грузить лишний раз. В примере ниже просто ставится кука по имени/значению + expires для даты чтобы раз в неделю сбрасывалась. Можете обойтись и без этого. Вот:

const cookieName = 'uLocation';
const addCookie = (cookieVal) => 
   document.cookie = `${cookieName}=${cookieVal.trim()}; expires=${new Date(new Date().getTime() + 3600 * 1000 * 24 * 7).toUTCString()}`;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы