Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
[ok]
cookie и php
Здравствуйте.
Подскажите пожалуйста, почему могут не отображаться куки?
Устанавливаю через setcookie('name', 'user').
Проверяю в браузере - куки появились.
Пытаюсь вывести echo $_COOKIE['name'];
Ничего не выводит. пробовал разные комбинации с разными кавычками - не хочет выводить. И в условиях тоже не получается проверить значение куки. В чём может быть проблема?
upd: Обнаружил 2 странности:
1) на всех других сайтах имя куки отображается как "namecookie", те которые я записал - "s namekookie".
2) if (isset($_COOKIE['name'])) echo "ukhj"; ничего не выводит, как будто куки и не записаны, в то время как опера в списке кукисов их показывает вместе со значениями.
upd2: Куки видны только в пределах того каталога, в котором находится скрипт их установивший. Чтобы куки были видны в пределах всего сайта, необходимо указывать зону действия:
setcookie('name', 'user') - неверно, будут видны только в пределах каталога со скриптом.
setcookie('name', 'user', null, "/") - верно, будет видно в пределах всего сайта.
setcookie('name', 'user', time()+3600, "/") - верно, будет видно в пределах всего сайта, через час станет недействительной.
cookie и php
Здравствуйте.
Подскажите пожалуйста, почему могут не отображаться куки?
Устанавливаю через setcookie('name', 'user').
Проверяю в браузере - куки появились.
Пытаюсь вывести echo $_COOKIE['name'];
Ничего не выводит. пробовал разные комбинации с разными кавычками - не хочет выводить. И в условиях тоже не получается проверить значение куки. В чём может быть проблема?
upd: Обнаружил 2 странности:
1) на всех других сайтах имя куки отображается как "namecookie", те которые я записал - "s namekookie".
2) if (isset($_COOKIE['name'])) echo "ukhj"; ничего не выводит, как будто куки и не записаны, в то время как опера в списке кукисов их показывает вместе со значениями.
upd2: Куки видны только в пределах того каталога, в котором находится скрипт их установивший. Чтобы куки были видны в пределах всего сайта, необходимо указывать зону действия:
setcookie('name', 'user') - неверно, будут видны только в пределах каталога со скриптом.
setcookie('name', 'user', null, "/") - верно, будет видно в пределах всего сайта.
setcookie('name', 'user', time()+3600, "/") - верно, будет видно в пределах всего сайта, через час станет недействительной.
-
-
06.04.2012 в 20:35Куки хранятся в браузере.
Сервер может послать куки браузеру путём отсылки HTTP-заголовка Set-Cookie.
Браузер всегда (если в нём не отключено в настройках) посылает установленные для данного домена (включая всякие www и т.п.) куки при любом запросе на сервер (даже если, например, картинки запрашиваются).
Браузер это делает посылая HTTP-заголовок Cookie.
PHP разбирает посланные браузером заголовки и, среди прочего, записывает куки в суперглобальный массив $_COOKIE. Единственное, что может повлиять на этот процесс — директива variables_order в конфиге php.
В Опере можно посмотреть, какие заголовки приходят с сервера и какие уходят на сервер (вкладка Сеть в Dragonfly).
-
-
06.04.2012 в 20:51Отсюда вопрос, как мне установить куки, чтобы они виделись в пределах всего сайта?
То есть. У меня структура примерно такая:
1) есть основной каталог, в котором лежит index.php. Собсно в htdocs он у меня и лежит, но не факт, что на хостинге будет также.
2) внутри основного каталога находятся дочерние, в которых скрипты.
3) Куки устанавливается одним из скриптов, в дочернем каталоге.
4) Надо сделать, чтобы они были видны в любой страничке сайта.
В общем. наглядно это будет вроде как-то так:
Нужно, чтобы куки виделись в любом скрипте, которых находится в основном каталоге (maindir) или в дочерних каталогах (s, i, ...).
-
-
06.04.2012 в 21:06-
-
06.04.2012 в 21:08нам подсказывает:
path
The path on the server in which the cookie will be available on. If set to '/', the cookie will be available within the entire domain. If set to '/foo/', the cookie will only be available within the /foo/ directory and all sub-directories such as /foo/bar/ of domain. The default value is the current directory that the cookie is being set in.
т.е.
setcookie('name','user',0,'/');
Вы действительно мануалы не читаете, что ли?
Возьмите в привычку сначала читать мануал по неработающей команде, а потом спрашивать
-
-
06.04.2012 в 21:13var_dump($_SESSION);
var_dump($_COOKIE);
Это позволит избежать проблем из-за опечаток)
Вначале каждого скрипта есть начало сессии?)
session_start();
-
-
06.04.2012 в 21:14-
-
06.04.2012 в 21:21-
-
06.04.2012 в 21:26Это да. Но всё же, интересно, вот те люди, которые написали десятки примеров по setcookie, у них всё в одном каталоге что ли? Ни в одном примере не увидел использование 4-го аргумента.
Co0L, var_dump($_COOKIE);
Оно что ли покажет мне куку из каталога, если вызываю из родительского?
Вначале каждого скрипта есть начало сессии?)
session_start();
Честно - нет.
-
-
06.04.2012 в 21:29Оно что ли покажет мне куку из каталога, если вызываю из родительского?
Нет, просто оно покажет все куки для этой страницы) Чтобы не обращаться к куке по имени для отладки)
Честно - нет.
Сталкивался с тем, что куки не хотели работать без старта сессии)
-
-
06.04.2012 в 21:30Хи. Мне это ещё предстоит, если напрусь. Спасибо за предупреждение.
-
-
06.04.2012 в 21:55Ну главное, не что в одном, а главное, что если при установке куки с точки зрения браузера это будет главный каталог, тогда и path будет "/".
-
-
06.04.2012 в 21:57php.su/ - любой php программист знает этот сайт. Мануал к php на русском.
С гуглом твоя тож не дружит?
-
-
06.04.2012 в 21:59Я вот его впервые вижу)) Даже через поиск ни разу не попадал
-
-
06.04.2012 в 22:03-
-
06.04.2012 в 22:06-
-
06.04.2012 в 22:18-
-
06.04.2012 в 22:30Ryuzaki_rnd, ru2.php.net/setcookie - по этой ссылке(официальный мануал) первые и третий примеры - с указанием каталога.
-
-
06.04.2012 в 22:472(che)n, Ну пропустил, бывает.)