Привет, Гость!
home login register
[+] Купить Рекламу
Хостинг для тебя! Заходи не пожалеешь
Что мы делаем полезного на официальном сайте WAP-поддержки? Подробно ...
Вступайте в нашу группу ВКОНТАКТЕ
Поздравляем, новичка с ID:1000
Как самомусделать QR-код
IT новости: в Windows новая опасная уязвимость
Проблемы восприятия IT
Как подтвердить авторство в Google

Учебник PHP #13
<< 1 ... 3 4 5 6 7 8 >>
(если в файле php.ini установлен флаг session_cookies) и создание файла сеанса на сервере. Второе назначение функции заключается в том, что она информирует ядро РНР о возможности использования в сценарии, в котором она была вызвана, сеансовых переменных.

Сеанс начинается простым вызовом session_start( ) следующего вида:

session_start( ):

Если сеанс можно создать, значит, его можно и уничтожить. Это делается функцией session_destroy( ).

Функция session_start( ) возвращает TRUE независимо от результата. Следовательно, проверять ее в условиях if или в команде die( ) бессмысленно.

session_destroy()

Функция session_destroy( ) уничтожает все хранимые данные, относящиеся к сеансу текущего пользователя. Синтаксис функции session_destroy( ):

boolean session_destroy( )

Следует помнить, что эта функция не уничтожает cookie на браузере пользователя. Впрочем, если вы не собираетесь использовать cookie после конца сеанса, просто присвойте параметру session.cookie_lifetime в файле php.ini значение ( ) (используемое по умолчанию). Пример использования функции:

<?

session_start( );

// Выполнить некоторые действия для текущего сеанса

session_destroy( ):

?>

Теперь вы умеете уничтожать сеансы, и мы можем перейти к работе с сеансовыми переменными. Возможно, самой важной сеансовой переменной является SID (идентификатор сеанса). Его легко можно получить при помощи функции session_id( ).

session_id( )

Функция session_id( ) возвращает SID для сеанса, созданного функцией session_start( ). Синтаксис функции session_id( ):

string session_id ([string sfd])

Если в необязательном параметре передается идентификатор, то значение SID текущего сеанса изменяется. Однако следует учитывать, что cookie при этом заново не пересылаются. Пример:

<?

session_start()

print "Your session identification number is ".sessionjd( ):

session_destroy( ):

?>

Результат, выводимый в браузере, выглядит примерно так:

Your session identification number is 067d992a949114ee9832flcllcafc640

Как же создать свою сеансовую переменную? С помощью функции session_register( ).

session_register( )

Функция session_register( ) регистрирует имена одной или нескольких переменных для текущего сеанса. Синтаксис функции session_register( ):

boolean session_register (mixed имя_переменной1 [, mixed имя_переменной2... ])

Следует помнить, что вы регистрируете не сами переменные, а их имена. Если сеанс не существует, функция session_register( ) также неявно вызывает session_start( ) для создания нового сеанса.

Прежде чем приводить примеры использования session_register( ), я хочу представить еще одну функцию, связанную с отслеживанием сеанса, — session_is_registered( ). Эта функция проверяет, была ли зарегистрирована переменная с заданным именем.

session_is_registered( )

Часто требуется определить, была ли ранее зарегистрирована переменная с заданным именем. Задача решается при помощи функции session_is_registered( ), имеющей следующий синтаксис:

boolean session_is_registered (string имя_переменной)

Применение функций session_register( ) и session_is_registered( ) будет продемонстрировано на классическом примере использования сеансовых переменных — счетчике посещений (листинг 13.5).

Листинг 13.5. Счетчик посещений сайта пользователем

<?

session_start( ):

if (! sessionjs_registered('hits')) :

session_register( 'hits' ) ;

endif ;

$hits++:

print "You've seen this page $hits times.

?>

Сеансовые переменные можно не только создавать, но и уничтожать. Для этой цели применяется функция session_unregister( ).

session_unregister( )

Сеансовые переменные уничтожаются функцией session_unregister( ). Синтаксис:

boolean session_unregister (string имя_переменной')

При вызове функции передается имя сеансовой переменной, которую вы хотите уничтожить.

<?

session_start()

session_register('username');

// Использовать переменную $username.

// Когда переменная становится ненужной - уничтожить ее.

session_unregister('username');

session_destroy();

?>

Как и в случае с функцией session_register, помните, что в параметре указывается не сама переменная (то есть имя с префиксом $). Вместо этого указывается имя переменной.

session_encode( )

Функция session_encode( ) обеспечивает чрезвычайно удобную возможность форматирования сеансовых переменных для хранения (например, в базе данных). Синтаксис функции session_encode( ):

boolean session_encode( )

В результате выполнения этой функции все сеансовые данные форматируются в одну длинную строку, которую можно сохранить в базе данных.

Пример использования session_encode( ) приведен в листинге 13.6. Предположим, что на компьютере «зарегистрированного» пользователя имеется cookie, в котором хранится уникальный идентификатор этого пользователя. Когда пользователь запрашивает страницу, содержащую листинг 13.6, UID читается из cookie и присваивается идентификатору сеанса. Мы создаем несколько сеансовых переменных и присваиваем им значения, после чего форматируем всю информацию функцией session_encode( ) и заносим в базу данных MySQL.

Листинг 13.6. Использование функции session_encode( ) для сохранения данных в базе данных MySQL

<?

// Инициировать сеанс и создать сеансовые переменные

session_register('bgcolor');

session_register('fontcolor');

// Предполагается, что переменная $usr_id (с уникальным

// идентификатором пользователя) хранится в cookie

// на компьютере пользователя.

// При помощи функции session_id( ) присвоить идентификатору

// сеанса уникальный идентификатор пользователя (UID),

// хранящийся в cookie. $id = session_id($usr_id);

// Значения следующих переменных могут задаваться пользователем

// на форме HTML $bgcolor = "white"; $fontcolor = "blue";

// Преобразовать все сеансовые данные в одну строку

$usr_data = session_encode( );

// Подключиться к серверу MySQL и выбрать базу данных users

@mysql_pconnect("localhost", "web", "4tf9zzzf")

or die("Could not connect to MySQL server!");

@mysql_select_db("users")

or die("Could not select user database!");

// Обновить пользовательские параметры страницы

$query = "UPDATE user_info set page_data='$usr_data' WHERE user_id= '$id'";

$result - mysql_query($query) or die("Could not update user information!");

?>

Как видите, быстрое преобразование всех сеансовых переменных в одну строку избавляет нас от необходимости создавать несколько полей для хранения/загрузки данных, а также несколько уменьшает объем программы.

session_decode( )

Все сеансовые данные, ранее преобразованные в строку функцией sessi on_encode( ), восстанавливаются функцией session_decode( ). Синтаксис:

string session_decode (string сеансовые_данные)

В параметре сеансовые_данные передается преобразованная строка сеансовых переменных, возможно — прочитанная из файла или загруженная из базы данных. Строка восстанавливается, и все сеансовые переменные в строке
Комментарии (0)
<< 1 ... 3 4 5 6 7 8 >>
Скачать Java книгу

»php/mysql/pdo/js
В библиотеку

На главную

Сообщество wap разработчиков I HwapCMS официальный сайт поддержки


RSS-лента
Генерация: 0.1161 сек.