Работа с сессиями в PHP или пошагово задаем данные (Rating: -4)
Помните экран установки windows? Пошаговая настройка, удобнейшая вещь в некоторых случаях. При разработке WEB-сайтов, такое тоже весьма уместно применять. Ведь пользователю не важно как все устроено внутри, главное-чтобы ему было удобно и интуитивно понятно, и, такие интерфейсы удовлетворяют этим условиям. Но как же их реализовать? Ведь у нас есть фактически лишь три метода передачи: POST, GET и COOKIE. Ну не пихать же эти данные в тело страницы, в адресную строку…и уж упаси Боже в печенье. Это еще можно сделать с 1-3 переменными, а если данных очень много-все, пиши-пропало. Но, разработчики PHP тоже не лыком шиты, они придумали механизм который способен хранить данные, причем, он хоть и основан на работе с файлами, с сериализованными массивами, довольно сильно облегчает жизнь разработчику. Что же это такое? Это сессии. <span id="more-446"></span><br />
Итак, каков же механизм сессий? Да все очень просто, данные хранятся в файлах на сервере, во временной дирректории, вид хранения-сериализованные данные. Т.е в этих файлах хранится глобальный массив $_SESSION. Главный плюс в том, что для каждого пользователя, зашедшего на сайт существует своя сессия, т.е для каждогго пользователя вы можете сами задать набор данных. Давайте я для начала приведу простую схему. Например, не так давно я делал для одной фирмы, продающей новые автомобили, конструктор авто, т.е пользователь сам мог выбирать какие доп функции и комплектациюю ему поставить на машину. У нас есть схема<br />
Марка->Модель->Двигатель+Коробка->Салон(Множество дополниптельных функций)+Кондиционер->Цвет->Страница заказа.
После каждого шага я все отправлял в сессию..и спокойно получал из нее требуемые мне данные. При выборе цвета, я знал все о предыдущих шагах. Я еще раз хочу подчеркнуть, не стоит изобретать велосипед, если есть готовое решение. Это удобно и просто. Надо лишь уловить суть.
Я надеюсь вы осознали все плюсы этого механизма, и теперь уже придумываете применение ему…что ж..мучать вас не буду и приступлю к технической части, к описанию кода.
Прежде всего нам надо инициилизировать сессию. Это делается с помощью
Надеюсь не утомил вас столь обьемным описанием. Есть еще обработчики сессиий, но про это я напишу позже
Added: Удаленный
10.05.2010 / 16:53Итак, каков же механизм сессий? Да все очень просто, данные хранятся в файлах на сервере, во временной дирректории, вид хранения-сериализованные данные. Т.е в этих файлах хранится глобальный массив $_SESSION. Главный плюс в том, что для каждого пользователя, зашедшего на сайт существует своя сессия, т.е для каждогго пользователя вы можете сами задать набор данных. Давайте я для начала приведу простую схему. Например, не так давно я делал для одной фирмы, продающей новые автомобили, конструктор авто, т.е пользователь сам мог выбирать какие доп функции и комплектациюю ему поставить на машину. У нас есть схема<br />
Марка->Модель->Двигатель+Коробка->Салон(Множество дополниптельных функций)+Кондиционер->Цвет->Страница заказа.
После каждого шага я все отправлял в сессию..и спокойно получал из нее требуемые мне данные. При выборе цвета, я знал все о предыдущих шагах. Я еще раз хочу подчеркнуть, не стоит изобретать велосипед, если есть готовое решение. Это удобно и просто. Надо лишь уловить суть.
Я надеюсь вы осознали все плюсы этого механизма, и теперь уже придумываете применение ему…что ж..мучать вас не буду и приступлю к технической части, к описанию кода.
Прежде всего нам надо инициилизировать сессию. Это делается с помощью
<a href="/php-manual/?function.session-start">session_start();</a>После этого нам будет доступен массив с данными $_SESSION. Чтобы положить какие то данные в сесию нам всего лишь надо присвоить значение элементу массива. Например вот так:
<?php session_start(); $_SESSION['user'] = 1; ?>Все теперь в сессиях записан элемент с ключом user и значением один. После перезагрузки страницы, если сессия стартует, то данные можно будет извлечь из массива. Надо сказать что сервер должен как-то идентифицировать пользователя…для этого у каждой сессии есть собственный идентификатор. Идентификатор может как писаться в строку гет запроса, так и передаваться через кукисы. (еще раз повторюсь что в куках только идентификатор, а все данные на сервере) Если вы храните идентификатор в куках, то он будет доступен только до закрытия браузера. Если же вы хотите передавать параметром через гет..что ж ваше право.но писать каждый раз перменную идентификатора..беее…долго и неудобно. Все делается гораздо проще. В PHP есть предопределенная константа SID. Она всегда содержит имя группы сесий и идентификатор, т.е. выглядит примерно так имя=идентификатор. Имя группы сессий можно задать командой session_name(), но данный оператор должен вызываться до инициализации сессий… Но это не все возможности сессий, идентификатор может подставляться в формы и в гет запросы автоматически. Для этого до того как инициализировать сесию требуется установить параметр PHP с помощью команды ini_set() вот так:
<?php ini_set("session.use_trans_sid",true); ?>Теперь PHP будет автоматически подставлять данные в линки, содержащие адрес вашего сайта, в формы. Кстати, чтобы лучше понять механизм ini_set() рекомендую зайти и посмотреть как реализуются другие задачи с его использованием, например как сделать карту сайта для phpBB3. Ресурс будет полезен, тем кто решил освоить не только PHP и MySQL.
Надеюсь не утомил вас столь обьемным описанием. Есть еще обработчики сессиий, но про это я напишу позже
Rating:
-4
Views: 1521Comments (7) »