Intereting Posts
Библиотеки и псевдокод для физической панели мониторинга / состояния Определенная функция «mysql_entities_fix_string» в PHP не вызвана Сериализация «Закрытия» не допускается – laravel PHP strtotime () «первый понедельник февраля» возвращается во второй понедельник, если 1 февраля – понедельник Сеансы PHP в поддоменах Laravel 4 ajax с частичными видами Преобразование с упрощенного на традиционный китайский md5 (uniqid) имеет смысл для случайных уникальных токенов? MySQL Search w / Упорядоченные подстановочные знаки и извлечение их значений Передача нескольких переменных на другую страницу в URL-адресе Строка в байтовый массив в php Разбиение страниц с помощью MySQLi Регулярное удаление изображений с тегом стиля из Html Parse Receiver android code после отправки push из php Каков наилучший способ создания облака тегов из массива с использованием h1-h6 для определения размера?

Корзина $ _SESSION Проблема

Я работаю над базовой корзиной покупок. Тем не менее, похоже, что переменная $ _SESSION неправильно хранится или доступна. Например, если вы отправитесь сюда, он отобразит имя элемента. Но при обновлении до cart.php без переменных $ _GET он ничего не возвращает. Что я делаю не так?

<?php include "tickets/config.php"; if (isset ($_GET['action']) && isset($_GET['item'])) { $cart = new Cart($_GET['item']); if ($_GET['action'] == "addItem") { $cart->addItem(); $cart->get_items_code(); $cart->populate(); } if($_GET['action'] == "removeItem") { $cart->removeItem(); $cart->get_items_code(); $cart->populate(); } $cart->postAllItems(); } else { $cart = new Cart(null); $cart->get_items_code(); $cart->populate(); $cart->postAllItems(); } class Cart { protected $all_items = array(); protected $request_item; protected $content; protected $item_obj; public function __construct($request_item) { $this->request_item = $request_item; if ($this->request_item) $this->item_obj = new Item($this->request_item); $this->all_items = $this->getAllItems(); } public function getAllItems() { if ($_SESSION['cart']) $request = $_SESSION['cart']; else $request = array(); return $request; } public function postAllItems() { $_SESSION['cart'] = $this->all_items; } public function addItem () { array_push($this->all_items, $this->item_obj); } public function removeItem() { unset($this->all_items[$this->item_obj->get_item()]); } public function get_items_code() { //for($i = 0; $this->all_items[$i]; $i++) { foreach($this->all_items as $item) { $name = $item->get_name(); $this->content .= <<<HTML <div class="item"> $name </div> HTML; } } public function populate() { echo <<<HTML <div id="list"> $this->content <div> HTML; } } class Item { protected $id; protected $name; protected $price; protected $desc; protected $colors; protected $sizes; protected $pic_url; protected $all_info; public function __construct($id) { $this->id = $id; $this->get_item_info(); } public function get_item() { return ($this); } public function get_name() { return $this->name; } protected function get_item_info() { $sql = "SELECT * FROM catalog WHERE id = ".$this->id; $this->all_info = mysql_query($sql); $this->all_info = mysql_fetch_array($this->all_info); $this->name = $this->all_info['name']; $this->price = $this->all_info['price']; $this->desc = $this->all_info['description']; $this->colors = $this->all_info['colors']; $this->sizes = $this->all_info['sizes']; $this->pic_url = $this->all_info['picture']; } } ?> 

Вам необходимо инициализировать сеанс, используя session_start() в верхней части страницы (до того, как содержимое сеансов будет изменено или прочитано).

Ваш код выглядит отлично, но вы должны вызывать session_start () на каждой странице, которая изменяет сеанс или читает из сеанса. Просто поместить его в начало страницы будет работать.

 session_start(); 

Я также недавно столкнулся с проблемой, когда vs $ _SESSION поддерживал себя после перенаправления страниц, что может быть вашей проблемой.

Переменные сеанса не переносят перенаправление с http://www.example.com на перенаправление http://example.com . Таким образом, вы используете перенаправления с относительными или абсолютными путями, но делаете это без имени файла:

использование

 header('Location: /new_page.php'); 

в отличие от

 header('Location: http://www.exmple.com/new_page.php') 

Может быть, здесь не применяется, но я немного пошутил.