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

Форум PHP

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

 

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

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

тема: Помогите с cookies
 
 автор: Nana   (24.05.2006 в 20:16)   письмо автору
 
 

Пишу как в учебнике:

<?
  $_COOKIE
['counter']++;
  
setcookie("counter",$counter);
  echo 
'Вы посетили эту страницу '.$_COOKIE['counter'].' раз';
?>



Выдается сообщение о том, что counter - undefined variable, и соответственно stcookie тоже из-за этого не работает.

Как сделать, чтобы counter воспринимался программой, и изменялся с каждой перезагрузкой стриницы?

   
 
 автор: Саня   (24.05.2006 в 20:22)   письмо автору
 
   для: Nana   (24.05.2006 в 20:16)
 

Авторы учебнка надеялись, что у всех включены глобальные переменные. У вас они, видимо, отключены. В таком случае нужно обратиться к суперглобальному массиву $_COOKIE:
<?php 
$_COOKIE
['counter']++; 
setcookie("counter"$_COOKIE['counter']); 
echo(
"Вы посетили эту страницу ".$_COOKIE['counter']." раз"); 
?>

   
 
 автор: Nana   (24.05.2006 в 20:26)   письмо автору
 
   для: Саня   (24.05.2006 в 20:22)
 

Я как раз сейчас это сделала (даже в своем посте поменяла код), но разницы никакой, только сообщение undefined index появилось - про все тот же counter.

   
 
 автор: Саня   (24.05.2006 в 20:33)   письмо автору
 
   для: Nana   (24.05.2006 в 20:26)
 

Вы забыли исправить строчку setcookie("counter",$counter);.

   
 
 автор: Nana   (24.05.2006 в 20:37)   письмо автору
 
   для: Саня   (24.05.2006 в 20:33)
 

Спасибо! Я уже исправила)), но результат тот же!
вот что выдает:

Notice: Undefined index: counter in C:\my\www\cookie_test.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at C:\my\www\cookie_test.php:2) in C:\my\www\cookie_test.php on line 3
Вы посетили эту страницу 1 раз

   
 
 автор: Nana   (24.05.2006 в 20:40)   письмо автору
 
   для: Саня   (24.05.2006 в 20:33)
 

Может быть все дело в Notice? Пишет предупреждение в браузер, и из-за этого Cannot modify header information?

   
 
 автор: CrazyAngel   (24.05.2006 в 20:49)   письмо автору
 
   для: Nana   (24.05.2006 в 20:40)
 

Вы не должны ничего выводить на экран до использования куки(даже пробела)

   
 
 автор: CrazyAngel   (24.05.2006 в 20:50)   письмо автору
 
   для: CrazyAngel   (24.05.2006 в 20:49)
 

Если это необходимо то вначале пишите


ob_start();

   
 
 автор: Nana   (24.05.2006 в 20:52)   письмо автору
 
   для: Nana   (24.05.2006 в 20:40)
 

Все получилось! Я была права. Нужно было избавиться от Notice))
Вот верный код:


<?php 
if(!isset($_COOKIE['counter'])) $_COOKIE['counter']=0;
$_COOKIE['counter']++; 
setcookie("counter"$_COOKIE['counter']); 
echo(
"Вы посетили эту страницу ".$_COOKIE['counter']." раз"); 
?> 


Спасибо за помощь!)

   
 
 автор: Саня   (24.05.2006 в 20:54)   письмо автору
 
   для: Nana   (24.05.2006 в 20:40)
 

<?php
if ( !isset($_COOKIE['counter']) ) {
  
setcookie("counter"1);
  echo(
"Вы посетили эту страницу 1 раз");
} else {
  
$_COOKIE['counter']++;
  
setcookie("counter"$_COOKIE['counter']);
  echo(
"Вы посетили эту страницу ".$_COOKIE['counter']." раз");
}
?>

Вот этот скрипт точно работает. А дело в том, что при первой установке куки функцией setcookie() переменная counter с массиве $_COOKIE не появится сразу. Она появится при следующем вызове скрипта. Ну и в дополнение ко всему текст ошибки, который вывелся в браузер помешал отправить куку, так как куки должны отправляться до вывода в браузер какой-либо информации.

   
 
 автор: Nana   (24.05.2006 в 20:56)   письмо автору
 
   для: Саня   (24.05.2006 в 20:54)
 

Спасибо большое, все стало ясно!

   
Rambler's Top100
вверх

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