Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/46: Рейтинг темы: голосов - 46, средняя оценка - 4.87
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325

Не устанавливаются куки

14.05.2012, 22:17. Показов 8887. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возникла неожиданно проблема, перестали устанавливаться куки. Вчера всё работало, (всегда до этого все работало сколько ни устанавливал) куки устанавливались, а сегодня перестали. Настройки браузера не менял у меня Firefox 12.0. Да и оно даже при самом высоком уровне приватности устанавливаются. Даже не знаю чем мне можно помочь в данной ситуации. Вот код установки кук.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
            if (!isset($_COOKIE['id_quest_N']))
            {
                setcookie("id_quest_N[0]", 2);
                setcookie("id_quest_B[0]", 0);
            }
            elseif (isset($_POST['Next']))
            {
                $i = Count($_COOKIE['id_quest_N']) - 1;
                $j = $i + 1;
                $k = $id_quest_N[$i] + 1;
                $q = $id_quest_B[$i] + 1;
                setcookie("id_quest_N[$j]", $k);
                setcookie("id_quest_B[$j]", $q);
            }
            elseif (isset($_POST['Back']))
            {
                $i = Count($_COOKIE['id_quest_N']) - 1;
                $j = $i + 1;
                $k = $id_quest_N[$i] - 1;
                $q = $id_quest_B[$i] - 1;
                setcookie("id_quest_N[$j]", $k);
                setcookie("id_quest_B[$j]", $q);
            }
            if (!isset($_COOKIE['test_name']))
            {
                setcookie("test_name", $_POST['Тесты']);  
            }
Подскажите, если кто-то может быть сталкивался с такой проблемой.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2012, 22:17
Ответы с готовыми решениями:

Не устанавливаются куки
Доброго времени суток!!! Сайт расположен локально (на ДЕНВЕРе): адрес такого вида http://localhost/blog/ Пытаюсь установить куки: ...

Не устанавливаются куки
Добрый день! У меня есть всплывающие окном которое срабатывает при загрузки страницы в течении 5 секунд. Затем я установил куку что бы окно...

Что не так (не устанавливаются куки)
<? $file_name = "counter.txt"; if(!file_exists($file_name)) { $fp = fopen($file_name, "w"); fwrite($fp, "1"); ...

13
weboman
 Аватар для Schtrich
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
15.05.2012, 03:49
ну у вас условие явное
PHP
1
if (!isset($_COOKIE['id_quest_N']))
если cookie с ключем id_questi_N не существует, то только тогда создавай кукисы, т.е. у вас она все еще может храниться, проверьте
PHP
1
var_dump($_COOKIE['id_quest_N']);
перед условием поставьте, смотрите что выйдет, если пусто, то странно что не создаются, может другой браузер тогда попробуйте, хотя это нонсенс.
0
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
15.05.2012, 10:01  [ТС]
AlienNation
то только тогда создавай кукисы, т.е. у вас она все еще может храниться, проверьте.
Я пошагово в NetBeans дебагером прохожусь по коду, есть возможность просмотреть значения всех переменных и $_COOKIE в том числе. Там пусто и код установки куки, то есть эти строки
PHP
1
2
setcookie("id_quest_N[0]", 2);
setcookie("id_quest_B[0]", 0);
выполняются, я собственными глазами это вижу. Да и не могут они не выполнится в условии же true.
Поразительно, позавчера этот код работал, все нормально устанавливалось, а сегодня не хочет.Профессиональные и начинающие гуру подскажите пожалуйста, может есть какие нибудь предположения?
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
15.05.2012, 10:36
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
if (!isset($_COOKIE['id_quest_N']))
   {
    setcookie("id_quest_N[0]", 2);
    setcookie("id_quest_B[0]", 0);
   }
#срабатыеват , и следовательно цепочка идущая от else срабатывать не будет пока у меня не 
#будет куки с именем id_quest_N , 
#следующий иф выдаёт натайс , что нет пост переменой , выж не проверили на существования
#этого поста
  if (!isset($_COOKIE['test_name']))
  {
   setcookie("test_name", $_POST['Тесты']);  
  }
0
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
15.05.2012, 11:17  [ТС]
Цитата Сообщение от crautcher Посмотреть сообщение
PHP
1
2
3
4
5
6
7
if (!isset($_COOKIE['id_quest_N']))
   {
    setcookie("id_quest_N[0]", 2);
    setcookie("id_quest_B[0]", 0);
   }
#срабатыеват , и следовательно цепочка идущая от else срабатывать не будет пока у меня не 
#будет куки с именем id_quest_N.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#Да, этот код срабатывает и устанавливает куку id_quest_N и куку id_quest_B поэтому код
#идущий от else будет срабатывать на следующем переходе на эту страницу.
            elseif (isset($_POST['Next']))
            {
                $i = Count($_COOKIE['id_quest_N']) - 1;
                $j = $i + 1;
                $k = $id_quest_N[$i] + 1;
                $q = $id_quest_B[$i] + 1;
                setcookie("id_quest_N[$j]", $k);
                setcookie("id_quest_B[$j]", $q);
            }
            elseif (isset($_POST['Back']))
            {
                $i = Count($_COOKIE['id_quest_N']) - 1;
                $j = $i + 1;
                $k = $id_quest_N[$i] - 1;
                $q = $id_quest_B[$i] - 1;
                setcookie("id_quest_N[$j]", $k);
                setcookie("id_quest_B[$j]", $q);
            }
#Позавчера всё работало.
 
#следующий иф выдаёт натайс , что нет пост переменой , выж не проверили на существования
#этого поста
  if (!isset($_COOKIE['test_name']))
  {
   setcookie("test_name", $_POST['Тесты']);  
  }
Переменная $_POST['Тесты'] есть всегда, она передается с предыдущей страницы по любому.
Е моё, да я же говорю, что дебагером в NetBeans, прохожу, переменная куки перед началом пуста все посты на месте, код установки куки срабатывает, а на следующей странице её почему-то нет. Это точно не ошибка в коде, так как код на этой странице, то есть этот код у меня позавчера работал на ура.
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
15.05.2012, 11:28
Цитата Сообщение от fredwriter Посмотреть сообщение
Это точно не ошибка в коде, так как код на этой странице, то есть этот код у меня позавчера работал на ура.
нут так если вы цичего не меняли и у вас просто перестало работать - так не бывает , может у вас была прилеплена валидная кука от предидущих версий кода , затем накосячили а кука еще весела
PHP
1
2
3
4
5
setcookie("id_quest_N[1]", 'blabla');
if (isset($_COOKIE['id_quest_N']))
 echo 'is'; 
else
  echo 'isnt';
isnt
выже понимаете что при дубавлении индекса это уже совсем другая кука
Цитата Сообщение от fredwriter Посмотреть сообщение
Переменная $_POST['Тесты'] есть всегда, она передается с предыдущей страницы по любому
не стоит недооценивать тупость или наоборот ум юзеров - не расчитывайте что юзер будет жать ток на те кнопки на которые вы думайте что он будет жать , если я руками введу адрес страницы обработчика а не перейду с формы будет натайс
0
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
15.05.2012, 12:10  [ТС]
я уже устал повторять, что работало всё нормально, это точно, устанавливались именно эти куки, у меня же не едет крыша. Или едет? У меня никаких других кук не было и вообще то от них у меня зависит будет ли работать приложение дальше. И позавчера работало.
setcookie("id_quest_N[1]", 'blabla');
PHP
1
2
3
4
if (isset($_COOKIE['id_quest_N']))
 echo 'is'; 
else
  echo 'isnt';

isnt
выже понимаете что при дубавлении индекса это уже совсем другая кука
То есть вы хотите сказать, что нельзя проверить массив на существование по его имени.
Я всегда думал, что у массива есть имя, то есть например имя у массива $Mass, а элемент этого массива $Mass[$i], и если мы проверяем на существование массива, то проверить это нужно по его имени то есть
PHP
1
2
3
4
if (isset($Mass))
{
.........
}
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
15.05.2012, 12:39
пхп.нет говорит что можно юзать куки как элементы массива , и мой пример еще раз проверил , иногда выводит что видит иногда что нет (chromium browser) . советую по дебажить , прописать везде чему вывод равна какая кука , какая проверка срабатывает какая нет
0
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
16.05.2012, 12:41  [ТС]
Подебажил, и обнаружил, что именно с этой страницы вообще никакая кука не устанавливается. Если, например просто оставить одну такую строчку на этой странице:
PHP
1
setcookie("tra", "bla");
всё равно не устанавливается. Хотя есть установка куки на других страницах этого же проекта и там всё работает.
Вот же бред.
0
weboman
 Аватар для Schtrich
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
16.05.2012, 16:09
Cookies должны устанавливаться до первого вывода информации в браузер (например, оперетором echo или выводом какой-либо функции).

http://www.php.su/phphttp/?cookies
0
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 325
16.05.2012, 20:21  [ТС]
AlienNation, я знаю, что Cookies должны устанавливаться до первого вывода информации в браузер и у меня так и есть.
Я наконец-таки нашел ошибку, хотя я не понял почему это ошибка и в чем ошибка. У меня на этой же странице есть код на javascript. Есть там две функции использующие ajax вот они:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function queryMySQL1(id) 
            {
                var req = getXmlHttp();
                var loc_q = document.getElementById('loc_q');
                req.onreadystatechange = function()
                { 
                    if (req.readyState == 4)
                    {
                    if(req.status == 200)
                        {
                            loc_q.innerHTML = req.responseText;
                    }
                }
                }
                var Mess_post = "Next=" + "Next" + "&Id=" + id; 
                req.open("POST", "test_for_stud_work.php", true);
                req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                req.send(Mess_post);
                loc_q.innerHTML = '<p class="p1">Ожидаем ответа сервера</p>';
        }
            
            
            function queryMySQL2(id) 
            {
                var req = getXmlHttp();
                var loc_q = document.getElementById('loc_q');
                req.onreadystatechange = function()
                { 
                    if (req.readyState == 4)
                    {
                    if(req.status == 200)
                        {
                            loc_q.innerHTML = req.responseText;
                    }
                }
                }
                var Mess_post = "Back=" + "Back" + "&Id=" + id; 
                req.open("POST", "test_for_stud_work.php", true);
                req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                req.send(Mess_post);
                loc_q.innerHTML = '<p class="p1">Ожидаем ответа сервера</p>';
        }
Как видно они очень похожи, можно конечно их в одну объединить, но дело не в этом. Дело в том, что последние строчки в этих функциях мешают интерпретатору видеть закрывающуюся фигурную скобку в конце функции и/или открывающуюся в начале. Даже редактор кода не подсвечивает открывающуюся, когда ставишь курсор рядом с закрывающейся или наоборот, за комментирование этих строчек тоже почему-то не помогает. Если удалить из второй функции эту строчку, начинает работать и редактор подсвечивает. Но лучше, конечно, из обеих удалить. Из-за этого бреда я мучился два дня. Может кто-то знает что это за ...?
1
weboman
 Аватар для Schtrich
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
16.05.2012, 23:00
а если наоборот:

HTML5
1
"<p class='p'>Ожидаем ответа сервера</p>"
Добавлено через 3 минуты
а мне интересно почему вы jQuery не используете? (просто интересно).
0
BeatlJS
30.10.2014, 19:53
Столкнулся с такой же проблемой. Неожиданно куки перестали устанавливаться. Перед этим добавил код из одного отлаженного скрипта в другой. И именно Ajax запросы! Сразу встал на измену и закоментировал все что добавил.
Результат - ноль. Начал курить inet и мануалы на PHP. Через час наткнулся на Ваш пост. Вы абсолютно правы - даже закоментрованный JS код не дает кукам работать нормально. Убил код - куки заработали. Ура. Но вот полностью согласен с тем что тут что-то не чисто и интерпретатор чего-то не так интерпре... Убью еще полчасика на разборки.
Если не получится - придется искать как это обойти...
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 20
18.05.2017, 09:26
такая же проблема, неделю все работало без вопросов, сегодня не устанавливаются:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
        $qs_clientID = "";
    if(isset($_GET['yourid'])){
        $qs_clientID = $_GET['yourid'];
    }
 
    $cookie_name = "rRclientID";
    if (!isset($_COOKIE[$cookie_name]))
        { 
            if ($qs_clientID == "") {
                //Генерируем идентификатор
                $clientID = md5(date("YmdHis"));
                setcookie($cookie_name, $clientID, time()+(365*5*24*60*60), "/");
                echo("<center>Устанавливаем сгенерированный ID: ".$clientID."</center>");
                $clientInformer = "display:block;visibility:visible;";
            } else {
                setcookie($cookie_name, $qs_clientID, time()+(365*5*24*60*60), "/");
                echo("<center>Устанавливаем полученный ID: ".$qs_clientID."</center>");
                $clientInformer = "display:block;visibility:visible;";
            }
        }
    else
        {
            $clientID = $_COOKIE[$cookie_name];
            if ($qs_clientID == "") {
                echo("<center>ID&nbsp;в&nbsp;строке запроса не&nbsp;передавался. Есть&nbsp;устанавленный ID:&nbsp;".$clientID."</center>");
                $clientInformer = "display:none;visibility:hidden;";
            } else {
                if ($qs_clientID == $clientID) {
                    //Генерируем идентификатор
                    echo("<center>Устанавленный и&nbsp;полученный ID&nbsp;совпадают, ничего не&nbsp;делаем.</center>");
                    $clientInformer = "display:none;visibility:hidden;";
                } else {
                    setcookie($cookie_name, $qs_clientID, time()+(365*5*24*60*60), "/");
                    echo("<center>Устанавленный и&nbsp;полученный ID&nbsp;не&nbsp;совпадают, установленный ID:&nbsp;".$clientID." заменен на:&nbsp;".$qs_clientID."</center>");
                    $clientInformer = "display:none;visibility:hidden;";
                }
            }
        }
Смысл, такой:
1. считать адресную строку, если там ничего не дали, то проверить установлены ли куки, если не установлены, - сгенерировать и установить, если установлены - ничего не делать.
2. если что-то дали в адресной строке - то проверить есть установленная кука или нет, если есть - то переписать (если не одинаковые), если нет - то установить.

До сегодня все отлично работало во всех браузерах.
а сегодня просто не выполняется ни одна инструкция "setcookie", - тоже во всех браузерах

php 5.6.0
В чем может быть проблема?

Добавлено через 29 минут
Вопрос снят.
Перенес код (не меняя) выше - до вывода в браузер, до тэга html, работоспособность вернулась.

По-этому вопрос придется перефразировать, а почему оно раньше работало (когда до него много чего в браузер выводилось)?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.05.2017, 09:26
Помогаю со студенческими работами здесь

Не устанавливаются куки
&lt;?php if (setcookie(&quot;TestCookie&quot;, '111')) echo &quot;Cookie успешно установлен!&quot;; else echo &quot;Cookie установить не удалось!&quot;; ?&gt; ...

Не устанавливаются куки
Хочу установить куки, но они не ставятся. Что я делаю не так? urls.py from django.conf.urls import url from . import views ...

Куки и CookieContainer - нужно, чтобы отправлялись все три куки
Создаю контейнер: CookieContainer cookieContainer = new CookieContainer(); И затем цепляю его к первому запросу: ...

Как куки одного домена сохранить как куки другого?
Здравствуйте, такой вопрос: нужно cookie на домене aaaaaa.com сохранить как cookie домена bbbbbb.com. Как это можно сделать?

СМА Electrolux EWF 12981W, Prod No 91452270000 - не устанавливаются отдельные программы, не устанавливаются отдельные программы
В стиральной машине устанавливаются следующие программы: Хлопок Эко( 2 поз, причем, она повторятся на 3 и 4 поз.), ручная стирка, шелк и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru