[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не работает функция
xJlaIIax
Здравствуйте, помогите решить проблему, не работает функция:
if (isset($_COOKIE['8']))
{
echo 'Кук есть.';
}
else
{
echo 'Кука нет.';
}


Если есть Cookie с именем 8, то все равно пишет что "Кука нет.". Тестирую на локальном сервере.



Спустя 5 минут, 31 секунда (11.01.2012 - 00:59) nugle написал(а):
Сделай
var_dump($_COOKIE) и посмотри что там есть

Спустя 21 секунда (11.01.2012 - 00:59) inpost написал(а):
xJlaIIax
Не называй куки числами, собственно, как и сессии. С сессиями 100% работать не будет, с куками, возможно, тоже.

Спустя 1 час, 52 минуты, 55 секунд (11.01.2012 - 02:52) xJlaIIax написал(а):
nugle, выдало: array(0) { }.

inpost, назвал Cookie8 всё равно не работает.

Спустя 4 минуты, 39 секунд (11.01.2012 - 02:57) waldicom написал(а):
Цитата (xJlaIIax @ 10.01.2012 - 22:53)
Если есть Cookie с именем 8, то все равно пишет что "Кука нет.". Тестирую на локальном сервере.

А как ставишь cookies?

Спустя 4 минуты, 20 секунд (11.01.2012 - 03:01) xJlaIIax написал(а):
setcookie('Cookie'. $id .'','Cookie');


Спустя 4 часа, 16 минут, 40 секунд (11.01.2012 - 07:18) NitroGenerate написал(а):
Откройте вашу страничку, на которой записывается кука оперой. И там пкм на странице, затем настройки сайта, после cookie, и смотрите, записалась ли кука в куках или нет. Странно то, что у вас isset($_COOKIE['8']) выдает ложь... У меня подобная проверка работала.

Спустя 5 часов, 41 минута, 26 секунд (11.01.2012 - 12:59) xJlaIIax написал(а):
В том то и дело что записалась.
Может быть у меня какая то функция отключена на локальном сервере?

Спустя 9 минут, 6 секунд (11.01.2012 - 13:08) Winston написал(а):
if (isset($_COOKIE['Cookie'. $id]))
{
echo 'Кук есть.';
}
else
{
setcookie('Cookie'. $id, 'Cookie');
echo 'Кука нет.';
}




Спустя 30 секунд Winston написал(а):
Откуда у тебя берется $id?

Спустя 10 минут, 48 секунд (11.01.2012 - 13:19) nugle написал(а):
попробую вместо проверки на существование, проверить на пустоту
if (!empty($_COOKIE['Cookie'. $id]))
{
echo 'Кук есть.';
}
else
{
echo 'Кука нет.';
}

Спустя 1 час, 49 минут, 16 секунд (11.01.2012 - 15:08) xJlaIIax написал(а):
Winston, я тут в коде не указал:
$id = $myrow["id"];

nugle, ошибся, то же не работает.

Почему Куки лучше цифрами не называть?

Спустя 24 минуты, 29 секунд (11.01.2012 - 15:33) nugle написал(а):
xJlaIIax
Цитата
Почему Куки лучше цифрами не называть?

с куками не пробовал, но с сессиями не работает
а перед установкой кука идет какойнибудь вывод?

поставь еще
error_reporting(E_ALL);

Спустя 1 минута, 13 секунд (11.01.2012 - 15:34) xJlaIIax написал(а):
Winston, работает, но если нет кука то он его записывает, а мне это не надо.
Мне нужно если кук есть то выдать одно сообщение, а если его нет то выдать другое.

Спустя 6 минут, 25 секунд (11.01.2012 - 15:40) xJlaIIax написал(а):
nugle, я устанавливаю Куку на одной странице, а на другой проверяю существует она или нет.

Куда именно нужно вставить error_reporting(E_ALL); ?

Спустя 11 минут, 28 секунд (11.01.2012 - 15:52) nugle написал(а):
Заинтересовался этой темой)
покапался в нете и вот что оказывается
Цитата
Куки будут невидимы до тех пор, пока не будет загружена следующая страница.

т.е. кукам требуется перезагрузка страницы

Спустя 24 минуты, 14 секунд (11.01.2012 - 16:16) xJlaIIax написал(а):
nugle, я записываю кук на одной странице, потом после записи перенаправляю человека на другую страницу и уже на этой странице проверяю у него наличие кука.

Значит условия для видимости кука выполнено?
Но почему не работает проверка, никак понять не могу.

Спустя 11 минут, 25 секунд (11.01.2012 - 16:28) Winston написал(а):
Цитата (xJlaIIax @ 11.01.2012 - 14:34)
Winston, работает, но если нет кука то он его записывает

Значит убери setcookie из else.
Цитата (xJlaIIax @ 11.01.2012 - 14:40)
Куда именно нужно вставить error_reporting(E_ALL); ?

В самое начало файла.
Цитата (xJlaIIax @ 11.01.2012 - 15:16)
Значит условия для видимости кука выполнено

Да.
Цитата (xJlaIIax @ 11.01.2012 - 15:16)
Но почему не работает проверка, никак понять не могу.

Напиши на этой странице (на которую переправил)
prinat_r(COOKIE);

Спустя 18 минут, 29 секунд (11.01.2012 - 16:46) xJlaIIax написал(а):
prinat_r(COOKIE); выдаёт Fatal error: Call to undefined function prinat_r() in C:\WebServers\www\raz.php on line 10
error_reporting(E_ALL); ничего не выдаёт.

Спустя 22 минуты, 22 секунды (11.01.2012 - 17:08) Winston написал(а):
Цитата (xJlaIIax @ 11.01.2012 - 15:46)
prinat_r(COOKIE); выдаёт Fatal error: Call to undefined function prinat_r() in C:\WebServers\www\raz.php on line 10

Упс.. Ошибся на одну букву. smile.gif
Но если вбить в гугл prinat_r(COOKIE) то он тебе правильный вариант выдаст, то есть этот
print_r($COOKIE);

Спустя 18 минут, 58 секунд (11.01.2012 - 17:27) xJlaIIax написал(а):
Фуф, я понял в чём дело!

Запись кука происходит на странице у которой путь test/raz.php
А проверка происходит на странице у которой путь raz.php
Что бы проверка работала нужно что бы страница на которой происходит запись и страница на которой происходит проверка были в одной директории.

Как я к этому выводу пришёл?

Создал файл raz.php в папке test с кодом
$id=8;
setcookie('Cookie'. $id, 'Cookie');
if (isset($_COOKIE['Cookie'. $id]))
{
echo 'Кук есть.';
}
else
{
echo 'Кука нет.';
}

Создал второй файл raz.php и поместил его в корень.
$id=8;
/*setcookie('Cookie'. $id, 'Cookie');*/
if (isset($_COOKIE['Cookie'. $id]))
{
echo 'Кук есть.';
}
else
{
echo 'Кука нет.';
}


С начало запускаю файл test/raz.php, он записывает кук, комментирую строку : setcookie('Cookie'. $id, 'Cookie'); .
Обновляю файл он пишет "Кук есть".
Захожу в Куки и вижу что он действительно записан.

Запускаю файл raz.php в корне, но он пишет "Кука нет".
Раз комментирую строку setcookie('Cookie'. $id, 'Cookie'); , он записывает кук, потом опять комментирую строку и обновляю страницу он пишет "Кук есть".
Захожу в Куки и вижу что присутствует два кука с одинаковыми названиями и значениями, НО с разными путями.

Теперь пробую то же самое, но два файла находятся в корне raz.php и raz_2.php.
В файле raz_2.php записываю кук, комментирую, обновляю, пишет "Кук есть".
В файле raz.php произвожу проверку, пишет "Кук есть", удаляю кук, обновляю страницу, пишет "Кука нет", то есть всё работает.

Из этого вывод, что файл где происходит запись и файл где происходит проверка должны находиться в одной директории.

Целая гора с плеч, я уже думал что не решу эту проблему!

Спустя 4 минуты, 50 секунд (11.01.2012 - 17:32) Гость_Winston написал(а):
Цитата (xJlaIIax @ 11.01.2012 - 14:27)
Что бы проверка работало нужно что бы страница на которой происходит запись и страница на которой происходит проверка были в одной директории.

Не задумывался почему массива $_COOKIE называется суперглобальным?
Свернутый текст
Потому, что этот массив можно использовать везде, независимо от файлов и директорий.

Спустя 4 минуты, 38 секунд (11.01.2012 - 17:37) xJlaIIax написал(а):
А теперь насчёт того что бы куки не называть числами.

Протестировал код:
$id=8;
setcookie($id, 'Cookie');
if (isset($_COOKIE[$id]))
{
echo 'Кук есть.';
}
else
{
echo 'Кука нет.';
}


Не смотря на то что число всё работает.

Спустя 3 минуты, 31 секунда (11.01.2012 - 17:40) Гость_Winston написал(а):
Работать то оно будет. А вот склько геморра ты себе наживёшь когда будешь использовать куки с числовыми именами biggrin.gif

Спустя 5 минут, 9 секунд (11.01.2012 - 17:46) xJlaIIax написал(а):
Например какого?
А можно использовать кук с именем Cookie_8 ?

Что бы файлы не держать в одной директории можно ли записывать кук с конкретным единым путём?

Спустя 20 часов, 5 минут, 16 секунд (12.01.2012 - 13:51) xJlaIIax написал(а):
Если быть точным то файл который записывает куки должен находиться в корне сайта и тогда проверка будет работать на всех страницах где бы они не находились.

Не обязательно что бы файл который записывает куки и файл в котором производится проверка находились в корне, самое главное что бы файл который записывает находился в корне.

Спустя 1 час, 21 минута, 25 секунд (12.01.2012 - 15:12) killer8080 написал(а):
Цитата (xJlaIIax @ 12.01.2012 - 12:51)
Не обязательно что бы файл который записывает куки и файл в котором производится проверка находились в корне, самое главное что бы файл который записывает находился в корне.

Не важно где лежит файл. Нужно правильно использовать функцию setcookie, у неё есть аргумент path
setcookie('name' ,'value', NULL, '/');

Спустя 8 часов, 48 минут, 54 секунды (13.01.2012 - 00:01) xJlaIIax написал(а):
killer8080, Вы правы на всё 100%, протестировал, всё прекрасно работает.
Спасибо, запомню!(+)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.