cookies & register_globals

mr_dima

Новичок
cookies & register_globals

Здравствуйте!
Пишу скрипт корзины интернет магазина,
все нормально работает, но только с register_globals=on.
Убрал эту строчку из .htaccess и теперь корзина работает,
но Cookies не записываются!
Стоит закрыть браузер и переменная сессии теряется
PHP:
session_start();
$cart = $_SESSION['cart'];
$action = $_GET['action'];
switch ($action) {
case 'add':
if ($cart) {
$cart .= ','.$_GET['id'];
} else {
$cart = $_GET['id'];
} 
break;
}
$_SESSION['cart'] = $cart;
Может кто-нибуть поможет!
 

YasonDelAlt

Новичок
ID сессии хранится в браузере только до его закрытия, это нормально. Для создания cookies нужно использовать функцию setcookie() (подробное описание можно найти в мануале), ее нужно вызывать до любого вывода в браузер, так же, как и функцию header(). Сохраненные cookies передаются в скрипт в суперглобальном массиве $_COOKIE.
 

YasonDelAlt

Новичок
Спасибо, а как же session_start(), ведь эта функция отсылает cookie, если они включены?
При вызове session_start() устанавливаются cookie с нулевым временем жизни, ели не ошибаюсь. Они сотрутся, как только юзер покинет домен или закроет браузер.
 

Popoff

popoff.donetsk.ua
mr_dima
Это нормальное поведение для корзины, что когда закрываешь браузер, а потом открываешь его заново - корзина пустая. Иначе получится, что придёт некий мр_вася в интернет-клуб, закажет там чего-нибудь, передумает покупать и просто закроет браузер. А за ним в это время будет следить мр_ваня, сядет за его комп, зайдёт на сайт и сразу узнает, что там мр_вася заказывал, но не купил.
 

Farsh

~ on ~ high ~ wave ~
При вызове session_start() устанавливаются cookie с нулевым значением жизни , потому что по умолчанию session.cookie_lifetime стоит в 0 .
 
Сверху