[Image] Понедельник, 02.12.2024, 19:34 [Image]
SEO, технологии, игры, IT новости
[Image] Главная Регистрация Вход [Image]
[Image] Приветствую Вас, Гость · RSS [Image]
Меню сайта

Форма входа
 Блог
Главная » 2011 » Январь » 31 » Работа с сеансовыми переменными
14:18
Работа с сеансовыми переменными
Другая необходимость, возникающая при работе с сеансами — определить, были ли зарегистрированы сеансовые переменные. Это можно сделать с помощью оператора isset, позволяющего проверить существование соответствующего ключа в массиве $_SESSION, или функции session_is_registered(): session_is_registered($name) где $name — строка, представляющая имя сеансовой переменной, которую нужно проверить. Эта функция возвращает true, если переменная была зарегистрирована, и false — если нет.
Для того чтобы реально продемонстрировать работу сеансов в РНР, сначала нужно создать ситуацию, в которой пользовательские данные должны быть сохранены во время запроса к серверу. Идеальным примером, удовлетворяющим таким требованиям, является пример с тележкой для покупок. Предположим, что вся функциональность тележки заключена в одном PHP-классе ShoppingCart. В этой ситуации для каждого покупателя создается единственный экземпляр тележки, который регистрируется как сеансовая переменная, сохраняемая в массиве $_SESSION. Для каждого последующего запроса экземпляр (и все его данные) пересоздаются РНР. Реализация такой системы показана в листинге 6.8.
Листинг 6.8. Пример с тележкой для покупок на РНР
Файл ShoppingCart.class.php
<?php
class ShoppingCart {
private $cart;
function construct() {
$this->cart = array();
}
public function addltem($id, $name, $cost) {
foreach($this->cart as $key=>$items) (
if($items['id'] == $id) {
$this->cart[$key]['quantity']++;
return;
$this->cart[] = array('id' => $id,
'name' => $name,
'cost' => $cost,
'quantity' => 1) ;
(
public function delltem($id) {
foreach($this->cart as $key => $items) {
150
Использование РНР для разработки Web-приложений
_ _ _ _ _ . _
if($items['id'] == $id) {
if($items['quantity'] > 1) {
$this->cart[$key]['quantity']—;
} else {
unset($this->cart[$key]);
}
return true;
return false;
)
public function getCartO {
return $this->cart;
}
public function clearCartf) {
$this->cart = array();
Файл Listing6_8.php
<?php
require_once("ShoppingCart.class.php");
session_start ();
if(!isset($_SESSION['cart']) II !is_object($_SESSION['cart' ])) {
$_SESSION['cart'] = new ShoppingCart ();
/* Добавить книгу в тележку (элемент #43 стоимостью $4 9.95) */
$_SESSION['cart']->addItem(43, "Book: PHP Unleashed", 49.95);
Несмотря на то что РНР не имеет проблем с использованием экземпляров объектов в качестве сеансовых переменных в отличие от любых других типов данных в РНР, для объектов, пересоздаваемых внутри сеанса, в РНР должен быть определен начальный класс. Это означает, что определение класса ShoppingCart должно быть включено в сценарий для переменной $_SESSION [' c a r t ' ], чтобы она могла быть корректно пересозданной.
Категория: Все о PHP | Просмотров: 1302 | Добавил: witkom8382 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024
Категории
Оптимизация сайта [591]
Создание сайтов [355]
Заработать в интернете [508]
Технологии [48]
Полезное [391]
Услуги и сервисы [317]
Автоблог [105]
Скрипты для Ucoz [39]
Движок на сайт [10]
Все о Joomla и Drupal [20]
Все о PHP [91]
Поиск
Пользовательский поиск
Статистика


Онлайн всего: 2
Гостей: 2
Пользователей: 0
Seo сайт, технологии продвижения, мета теги, оптимизация сайтов, новости сео, Скрипты, Ucoz

Рейтинг@Mail.ru