Задать вопрос

Как корректно изменить COOKIE?

Задача - изменять куки в зависимости от гет значений. Куки изначально установлены.

Пытаюсь изменить также как и устанавливал
$time=31536000; // Ставим куку на год
setcookie('date_1', $_GET['date_1'], time()+$time,"/");

Warning: Cannot modify header information - headers already sent by (output started at D:\OpenServer\domains\site.ru\common\page_header.php:28)

page_header.php - 28 строка, как и все строки сплошной echo.
<!-- Основной css файл -->
<link rel="stylesheet" type="text/css" href="'.$path_to_root_dir['admin'].'main.css" />'.$head_code.'</head>';
echo'<body>';


Пытаюсь так. Ну а что такого? Передаю в служебный массив значение...
$_COOKIE['date_1']=$_GET['date_1'];
Нет сообщений. Работает вроде.

Хочу убедиться - а что там лежит в куке, когда я буду изменять страницу?
echo $_COOKIE['date_1']; //Работает. И изменяется.
Действительно работает и изменяется значение.
Но в браузере, при просмотре кук не изменяется....странно.

И всё бы хорошо, но вызываю другой скрипт через JS.

$(function(){
$('.js_open_delete_schedule_form_modal_window').on('click', function(){
$('#content_container').arcticmodal();
<!-- Передаем id нажатой ссылки вызываемому скрипту -->
$('#main_container').load('modules/schedule/delete_schedule_form.php?form_path_to_root_dir=<?php echo $path_to_root_dir['admin']; ?>&id='+this.id);
return false;
});
})

Да впрочем какая разница что я вызываю...

И в этом скрипте смотрю, а что в куке?
echo $_COOKIE['date_1'];
А там первоначально установленное значение!
Но я же изменял его! Но вот же в предыдущем скрипте пишет разные значения...

Как корректно изменить COOKIE? Что я не так делаю?

PS
Обычно я использую $_GET и $POST.
Но тут приходится таскать часть инфы через куки.
Я не могу использовать $_GET т.к. часть скриптов вызывается через JS. И мне придется писать этот "хвост" и в пути к вызываемому скрипту и в вызываемом скрипте - три раза.
$POST тоже не эффективен в силу того, что в url строке должна быть информация.
  • Вопрос задан
  • 1109 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@achieffment
$_GET, $_POST, $_COOKIE и другие суперглобальные переменные могут перезаписываться внутри документа, но это не означает, что при вызове в другом документе, значения сохраняются. Если я не посылаю POST-запрос, я так же могу изменять в нем значения и потом использовать:
$_POST['id'] = 1;
echo $_POST['id']; // 1.
То есть они всегда остаются всего лишь переменными, но POST и другие запросы, функции задают им изначальные параметры перед вызовом документа. setcookie() в том числе. Чтобы корректно изменять значение, которое бы отображалось так же в других документах, нужно снова вызвать setcookie(), который перезапишет значение.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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