Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не пускать клиента с отключенными cookie
 
 автор: Владимир55   (07.10.2007 в 16:47)   письмо автору
 
 

Для идентификации посетителя я использую функцию

setcookie ("music", "man40", time() + 100000);


А можно ли прежде прозондировать, включены ли у него cookie? И если не включены, то дать ему сообщение типа:

"Включите cookie".

Как бы это сделать?

   
 
 автор: Valick   (07.10.2007 в 17:14)   письмо автору
 
   для: Владимир55   (07.10.2007 в 16:47)
 

Есть два варианта:
1) Можно в полнолуние пойти на старое неосвящённое кладбище, набрать волшебной пыли и поймать летучую мышь. Написать письмо тому у кого хотите проверить куки, посыпать бумагу волшебной пылью, запечатать конверт, напугать летучую мышь и использовать её экскременты в качестве сургуча. Отослать конверт юзеру. В зависимости от ответа выдать в браузер строку "Включите cookie" или не выдавать.
2) Установить куки. прочитать куки. если читаются значит включены.

   
 
 автор: Владимир55   (07.10.2007 в 19:08)   письмо автору
 
   для: Valick   (07.10.2007 в 17:14)
 

Первый вариант интереснее.

   
 
 автор: Владимир55   (07.10.2007 в 19:23)   письмо автору
 
   для: Владимир55   (07.10.2007 в 19:08)
 

А можно ли установить одному клиенту два cookie?

Это не противоречит каким-либо правилам или техническим регламентам?

   
 
 автор: sim5   (07.10.2007 в 19:35)   письмо автору
 
   для: Владимир55   (07.10.2007 в 19:23)
 

Прочтите тут http://softtime.ru/forum/read.php?id_forum=4&id_theme=42884&page=8 про куки.

   
 
 автор: Unkind   (07.10.2007 в 19:35)   письмо автору
 
   для: Владимир55   (07.10.2007 в 19:23)
 

> А можно ли установить одному клиенту два cookie?
Можно.

   
 
 автор: Valick   (07.10.2007 в 19:40)   письмо автору
 
   для: Владимир55   (07.10.2007 в 19:23)
 

А в торой эффективнее))
Пробную партию писем по первому варианту я отослал, но ответа пока нет...

В каком смысле два cookie? Да хоть двадцаць два. Раньше теоритически существовали какие-то ограничения по общему "весу" cookie, а щас помоему их нет. Грубо говоря я не попадпл в ситуацию когда браузер мне говорит "Ваша бочка куков переполнена, удалите ненужные куки".

   
 
 автор: sim5   (07.10.2007 в 19:58)   письмо автору
 
   для: Valick   (07.10.2007 в 19:40)
 

>Да хоть двадцаць два.
Если говорить об одном документе, то не более 20.

   
 
 автор: Valick   (07.10.2007 в 20:06)   письмо автору
 
   для: sim5   (07.10.2007 в 19:58)
 

Если говорить об одном документе, то не более 20

Ну совершенно недавно я где-то читал, что сняли это ограничение.... или мне это прислиось, точно сказать не могу))

   
 
 автор: sim5   (07.10.2007 в 20:15)   письмо автору
 
   для: Valick   (07.10.2007 в 20:06)
 

Не читал, поищем, может и правда, а я не знаю.

   
 
 автор: bronenos   (07.10.2007 в 20:00)   письмо автору
 
   для: Valick   (07.10.2007 в 19:40)
 

...а браузер начинает чистить самые старые при этом

   
 
 автор: Владимир55   (07.10.2007 в 22:19)   письмо автору
 
   для: Владимир55   (07.10.2007 в 19:23)
 

Чтобы лучше понять эти куки, сделал вот такой тестик:

<?php
$flag 
false ;
echo 
"<br>Исходное состояние флага $flag ";

setcookie ("music""test"time() +1);

$flag = (isset($_COOKIE['music']) && $_COOKIE['music']=="test");
echo 
"<br>Флаг от куки test $flag ";

$flag false ;
setcookie ("music""man40"time() + 25);

$flag = (isset($_COOKIE['music']) && $_COOKIE['music']=="man40");
echo 
"<br>Флаг от куки man40 $flag ";
?>


В итоге получаю сообщение:

Исходное состояние флага
Warning: Cannot modify header information - headers already sent by (output started at /home/data/www/music.ru/anketa/999.php:2) in /home/data/www/music.ru/anketa/999.php on line 6

Флаг от куки test
Warning: Cannot modify header information - headers already sent by (output started at /home/data/www/music.ru/anketa/999.php:2) in /home/data/www/music.ru/anketa/999.php on line 12

Флаг от куки man40

Строки 6 и 12 - setcookie

Непонятно...

   
 
 автор: sim5   (07.10.2007 в 22:34)   письмо автору
 
   для: Владимир55   (07.10.2007 в 22:19)
 

Перед отправкой заголовков (куки вы устанавливаете также через заголовок), не должно быть никакого вывода в браузер, это уже столько раз упоминалось.

   
 
 автор: Владимир55   (07.10.2007 в 23:02)   письмо автору
 
   для: sim5   (07.10.2007 в 22:34)
 

Плохо быть бестолковым - прошу меня простить!

Теперь я код переписал так:


<?php
setcookie 
("music""test"time() +1);        // Строка 3
$flag1 false ;
$flag1 = (isset($_COOKIE['music']) && $_COOKIE['music']=="test"); // Строка 5

setcookie ("music""man40"time() + 25);       // Строка 7
$flag2 false ;
$flag2 = (isset($_COOKIE['music']) && $_COOKIE['music']=="man40");

echo 
"<br>Флаг от куки test $flag1 ";                            // Строка 11
echo "<br>Флаг от куки man40 $flag2 ";
?>


Получаю такое сообщение:

Warning: Cannot modify header information - headers already sent by (output started at /home/data/www/music.ru/anketa/999.php:2) in /home/data/www/music.ru/anketa/999.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at /home/data/www/music.ru/anketa/999.php:2) in /home/data/www/music.ru/anketa/999.php on line 7

Флаг от куки test
Флаг от куки man40

В чем теперь-то конфликт?

   
 
 автор: sim5   (07.10.2007 в 23:07)   письмо автору
 
   для: Владимир55   (07.10.2007 в 23:02)
 

Сторока 5, а по коду видно всего 4! У вас даже перед <?php не должно быть пробелов!!!

   
 
 автор: Владимир55   (07.10.2007 в 23:23)   письмо автору
 
   для: sim5   (07.10.2007 в 23:07)
 

Не получается у меня ничего...

Я приложил файл - может, взгляните?

Ошибки теперь не сообщаются, но и гуки не работают!

   
 
 автор: sim5   (07.10.2007 в 23:25)   письмо автору
 
   для: Владимир55   (07.10.2007 в 23:23)
 

Нет, кто либо другой поможет, а у нас 5:30 утра, и я ухожу бай :)

   
 
 автор: Владимир55   (07.10.2007 в 23:31)   письмо автору
 
   для: sim5   (07.10.2007 в 23:25)
 

Приятных снов!

   
 
 автор: bronenos   (08.10.2007 в 00:14)   письмо автору
 
   для: Владимир55   (07.10.2007 в 23:31)
 

Владимир, поищите по данному форуму ключевые слова "headers already sent" - и будет вам "-1" проблема. Честное слово, тема изъедена до костей!

(Извините, sim5, что нажал на "Ответить" под вами - не успел сообразит, кому я отвечаю))

   
 
 автор: Владимир55   (08.10.2007 в 00:24)   письмо автору
 
   для: bronenos   (08.10.2007 в 00:14)
 

*** поищите по данному форуму ключевые слова "headers already sent" ***

Поискал. Вот с каким результатом:
"К сожалению, по Вашему запросу ничего не найдено."

Скажу Вам откровенно - пока ночь и нас никто не слышит - затрахался я с этими гуки! Уже хочется пиз... чем-нибудь по монитору!

   
 
 автор: bronenos   (08.10.2007 в 00:46)   письмо автору
 
   для: Владимир55   (08.10.2007 в 00:24)
 

1. монитор ничего не даст. надо по харду
2. тогда искать в СООБЩЕНИЯХ и ключевые слова "modify header"

   
 
 автор: Владимир55   (08.10.2007 в 01:10)   письмо автору
 
   для: bronenos   (08.10.2007 в 00:46)
 

Ночь загадок...

   
 
 автор: Valick   (08.10.2007 в 08:07)   письмо автору
 
   для: Владимир55   (08.10.2007 в 01:10)
 

Позор на наши седые головы!!!
Установив куку, её значение будет доступно только при следующем посещении страницы.
И вот ещё: если вы инклюжите файл, в файл перед заголовками, то подключаемый файл не должен содержать пробелов и переводов строк не только пред <?php, но и после ?> !!!

про куки посмотрите здесь http://softtime.ru/bookphp/gl8_2.php

   
 
 автор: Владимир55   (08.10.2007 в 11:22)   письмо автору
 
   для: Valick   (08.10.2007 в 08:07)
 

Спасибо Вам за добрый совет!

   
 
 автор: Саня   (08.10.2007 в 08:05)   письмо автору
 
   для: Владимир55   (07.10.2007 в 23:23)
 

Нельзя одновременно ставить и проверять кукисы в одном скрипте. Потому что куки будут доступны только после перезагрузки страницы. Функция setcookie() посылает заголовок Set-Cookie браузеру, а не заполняет массив $_COOKIE. Этот массив заполняется только когда от браузера прийдёт заголовок Cookie с нужными данными.

   
 
 автор: Владимир55   (08.10.2007 в 11:22)   письмо автору
 
   для: Саня   (08.10.2007 в 08:05)
 

Спасибо!
Сам бы я до этого никогда не додумался!
Ну, или лет через сто...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования