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
Форумы портала PHP.SU :: Версия для печати :: работа с куками
Форумы портала PHP.SU » » HTTP и PHP » работа с куками

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

1. Demeus - 15 Мая, 2011 - 12:08:08 - перейти к сообщению
Привет!
Такая проблема, при посещении странице читаю куки, если кук не установлен то задаю значение по умолчанию
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 при первом заходе пустая?
2. komprenda - 15 Мая, 2011 - 12:18:13 - перейти к сообщению
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.  
3. OrmaJever - 15 Мая, 2011 - 13:52:37 - перейти к сообщению
Demeus пишет:
но почему переменная $cites при первом заходе пустая?

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

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

Куки обязаны быть удалены с теми же параметрами, с которыми были установлены.
4. Demeus - 15 Мая, 2011 - 15:30:19 - перейти к сообщению
Делаю так
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, хотя должен быть другой город, что здесь не так?
5. komprenda - 15 Мая, 2011 - 15:49:05 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $mesto = isset($_GET["mesto"]) ? trim($_GET["mesto"]) : "";
  3. if (!empty($mesto)) {
  4. setcookie("cites", $mesto, time() + 60 * 60 * 24);
  5. }
  6.  
6. Demeus - 15 Мая, 2011 - 16:03:44 - перейти к сообщению
а на index-ой странице должно остается так же?
PHP:
скопировать код в буфер обмена
  1.  
  2. if (isset($_COOKIE['cites'])){
  3.         $cites=$_COOKIE['cites'];
  4. }
  5. else {
  6.         $cites = "moskva";
  7.         setcookie("cites", $cites);
  8. }
  9.  
7. komprenda - 15 Мая, 2011 - 16:06:35 - перейти к сообщению
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 третий аргумент передать

 

Powered by ExBB FM 1.0 RC1