Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: работа с куками

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Demeus
Отправлено: 15 Мая, 2011 - 12:08:08
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Привет!
Такая проблема, при посещении странице читаю куки, если кук не установлен то задаю значение по умолчанию
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if (isset($_COOKIE['cites'])){
  4.         $cites=$_COOKIE['cites'];
  5. }
  6. else {
  7. setcookie("cites",'moskva');
  8. $cites=$_COOKIE['cites'];
  9. }
  10.  

но почему переменная $cites при первом заходе пустая?
 
 Top
komprenda
Отправлено: 15 Мая, 2011 - 12:18:13
Post Id


Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Май 2011  


Помог: 3 раз(а)




Demeus пишет:
Привет!
Такая проблема, при посещении странице читаю куки, если кук не установлен то задаю значение по умолчанию
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if (isset($_COOKIE['cites'])){
  4.         $cites=$_COOKIE['cites'];
  5. }
  6. else {
  7. setcookie("cites",'moskva');
  8. $cites=$_COOKIE['cites']; // вот тут будет ошибка, т.к. переменная не установлена
  9. }
  10.  

но почему переменная $cites при первом заходе пустая?


всегда пиши первой строкой



это общий совет

session_start(), если нигде далее не идёт обращение к $_SESSION не нужна

Что касается вопроса, что такое куки? Это данные, которые хранятся на стороне клиента. Ты установил куку, её сохранил браузер, но получить данные возможно будет только после следующего обращения. Измени код так:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. if (isset($_COOKIE['cites'])){
  5.         $cites=$_COOKIE['cites'];
  6. }
  7. else {
  8. $cites = "Moskva";
  9. setcookie("cites", $cites);
  10.  

(Отредактировано автором: 15 Мая, 2011 - 12:22:12)

 
 Top
OrmaJever Модератор
Отправлено: 15 Мая, 2011 - 13:52:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Demeus пишет:
но почему переменная $cites при первом заходе пустая?

из описания функции setcookie()
Цитата:
Обычные ловушки:

Куки будут невидимы до тех пор, пока не будет загружена следующая страница.

Куки обязаны быть удалены с теми же параметрами, с которыми были установлены.

(Отредактировано автором: 15 Мая, 2011 - 13:53:05)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Demeus
Отправлено: 15 Мая, 2011 - 15:30:19
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Делаю так
PHP:
скопировать код в буфер обмена
  1.  
  2. if (isset($_COOKIE['cites'])){
  3.         $cites=$_COOKIE['cites'];
  4. }
  5. else {
  6.         $cites = "moskva";
  7.         setcookie("cites", $cites);
  8. }
  9.  

при смене города делаю так
PHP:
скопировать код в буфер обмена
  1.  
  2. if($_SERVER['REQUEST_METHOD']=='GET' && isset($_GET['mesto']) && !empty($_GET['mesto'])){
  3.         $mesto=$_GET['mesto']; 
  4.         SetCookie("cites","");
  5.         SetCookie("cites",$mesto);
  6. }
  7.  

Но когда перехожу опять на главную при чтении кука выводится moskva, хотя должен быть другой город, что здесь не так?
 
 Top
komprenda
Отправлено: 15 Мая, 2011 - 15:49:05
Post Id


Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Май 2011  


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $mesto = isset($_GET["mesto"]) ? trim($_GET["mesto"]) : "";
  3. if (!empty($mesto)) {
  4. setcookie("cites", $mesto, time() + 60 * 60 * 24);
  5. }
  6.  

(Отредактировано автором: 15 Мая, 2011 - 15:54:26)

 
 Top
Demeus
Отправлено: 15 Мая, 2011 - 16:03:44
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




а на index-ой странице должно остается так же?
PHP:
скопировать код в буфер обмена
  1.  
  2. if (isset($_COOKIE['cites'])){
  3.         $cites=$_COOKIE['cites'];
  4. }
  5. else {
  6.         $cites = "moskva";
  7.         setcookie("cites", $cites);
  8. }
  9.  
 
 Top
komprenda
Отправлено: 15 Мая, 2011 - 16:06:35
Post Id


Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Май 2011  


Помог: 3 раз(а)




Demeus пишет:
а на index-ой странице должно остается так же?
PHP:
скопировать код в буфер обмена
  1.  
  2. if (isset($_COOKIE['cites'])){
  3.         $cites=$_COOKIE['cites'];
  4. }
  5. else {
  6.         $cites = "moskva";
  7.         setcookie("cites", $cites);
  8. }
  9.  


разве что в setcookie третий аргумент передать
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB