Книга говорит, постоянное сохранение файлов cookie на клиентской машине до истечения срока ее действия. сеанс cookie исчезнет после закрытия браузера.
я попробовал это, например:
setcookie("name", "value"); // before any output
но после закрытия браузера и перезагрузки он все еще существует (от print_r($_COOKIE)
).
Я попробовал пару различных браузеров, таких как сафари, хром, firefox, все это так. только затмение отличается :)
так, все текущие браузеры не следуют этому "правилу"? или есть какой-то по умолчанию тайм-аут для cookie сеанса, о котором я не знаю?
Благодарю.
РЕДАКТИРОВАТЬ:
Я проверил в firebug, что он сказал:
Имя Срок действия домена истекает
имя значения localhost session
Спасибо всем. Это моя проблема. Я работаю над macbook, я думал, что щелчок красным крестом закроет браузер. но хотя браузер ушел. на самой верхней части экрана все еще находится панель меню сафари. я должен нажать сафари и выйти из него.
теперь все мои сеансовые куки исчезли после закрытия браузера :)
То, что вы на самом деле пытаетесь установить, - это persistent cookie
Пакет persistent cookie
session cookie
или просто session
можно просто установить, запустив сеанс или сохранив значение в сеансе, например $_SESSION['name']=$value
.
То, что вы делаете, это persistent cookie
он не истечет, даже если браузер закрыт. Он истекает только после истечения времени, установленного в cookie.
Как setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
он установит информацию о файлах cookie за 1 день. Даже если браузер закрыт.
Вы можете установить время и информацию о файлах cookie в соответствии с вашими потребностями... "
Это потому, что вы настраиваете cookie.
Сессии - это не файлы cookie. Печенье - это не сеансы.
http://www.tuxradar.com/practicalphp/10/1/0
Цитируется с первой страницы:
Cookies могут быть установлены на долгий срок службы, а это значит, что данные, хранящиеся в файле cookie, могут храниться в течение нескольких месяцев, если не лет.
И сеансы, через страницу на сеансах:
Также важно отметить, что сеансы продолжаются только до тех пор, пока пользователь не закрывает свой браузер, тогда как файлы cookie могут быть настроены так долго.
То, что вы там установили, - это не cookie сеанса. После того, как страница загрузится в браузере, проверьте файлы cookie, установленные с вашего сервера (localhost, если это локальная машина), вы увидите файл cookie SESS_ID, который задается сервером, и он запускается при закрытии браузера
Проверьте свои настройки PHP для имени, домена и пути cookie сеанса и отключите cookie, используя те же значения, что и setcookie(). Все они могут быть прочитаны с помощью ini_get() и переданы переменным.
В приведенном выше совете предполагается, что вы используете встроенный механизм сеанса PHP, т.е. вы не используете фреймворк с собственной собственной пользовательской библиотекой сеансов.