Доброго времени суток дорогие друзья. Сегодня будут рассмотрены функции для работы с сессиями(сеансами) которые предоставляет нам php. При инициализации сессии создается уникальный идентификатор который храниться в виде сессионной куки в браузере пользователя для его идентификации. Сами же данные сессии хранятся на сервере. Cессии более предпочтительны чем те же самые куки. Потому что куки как представляют собой временные данные которые хранятся в браузере пользователя и бывают случаи когда их просто угоняют.
У кук и сессий есть общая особенность - время хранения. То есть данные в них не могут хранится вечно. И через определенный промежуток они умирают или разрегистрируются.
Для того чтобы работать с сессиями необходимо объявить старт.
session_start();
C помощью данной функции мы можем начинать работу с сессиями. Отмечу что старт сессий желательно помещать в самое начало документа до первого вывода данных в буфер или другого кода(html, javascript). Иначе произойдет ошибка.
Отлично! После старта сессий мы можем приступать к работе с ними. Все сессии и их данные хранятся в супер-глобальном массиве $_SESSION. И следовательно чтобы создать новую сессию и поместить туда данные нам достаточно написать:
$_SESSION['login'] = 'c7t4ctv4otco3cf64c36o6vo';
Здесь мы создали сессию с ключом(названием) 'login' и поместили туда определенные данные. Теперь если нам понадобится получить данные из сессии с ключом логин:
echo $_SESSION['login'];
нам достаточно обратится к супер-глобальному массиву $_SESSION и указать ключ 'login'.
Если мы хотим изменить хранимые данные в сессии нам достачно их переприсвоить
$_SESSION['login'] = 'new_data';
У каждой сессии есть свой уникальный идентификатор который сохраняется в сессионной куке в браузере пользователя и для того чтобы его получить мы можем воспользоваться:
echo session_id();
функцией session_id() . Мы также можем установить идентификатор сессии вручную:
session_id('new_id');
передав в данную функцию параметр в виде строки.
По умолчанию сессии работают до завершения сеанса пользователя. К примеру если пользователь закроет браузер, а затем откроет заново страницу с нашей сессией, ее уже может и не быть. Это не всегда удобно и поэтому мы можем через конфигурационный файл php.ini задавать время жизни сессии в секундах, пример:
ini_set('session.gc_maxlifetime', 10000000);
здесь мы установили максимальное время жизни сессии в секундах с помощью функции init_set(). Теперь даже если вы выйдете из браузера и зайдете о потом обратно на свою страницу сеанс останется активным. Однако данная настройка не всегда работает. Ее альтернативой может стать специальная директива в конфигурационном файле htaccess.
php_value session.gc_maxlifetime 20000
Здесь мы выставили время жизни сессии в 20000 секунд. Помните что некоторые хостинг провайдеры запрещают устанавливать подобные директивы в файле htaccess на хостинге.
И напоследок давайте рассмотрим ситуацию когда нам необходимо уничтожить определенную сессию или весь сеанс.
Для того чтобы разрегистрировать (удалить) определенную сессию нам достаточно воспользоваться функцией unset()
session_start();
$_SESSION['login'] = 'c7t4ctv4otco3cf64c36o6vo';
echo $_SESSION['login'];
unset($_SESSION['login']);
echo $_SESSION['login'];
Как видите данные сессии с ключом 'login' второй раз не выводятся так как мы ее разрегистрировали c помощью unset().
Мы можем сразу удалить все сессии:
session_destroy();
или
unset($_SESSION);
Мы можем произвести удалении всех сессий через функцию session_destroy() или unset() помещая туда весь супер-глобальный массив $_SESSION.
На этом дорогие друзья данная статья подошла к концу. Надеюcь информация была для вас полезной.
На этом я с вами прощаюсь. Желаю успехов и удачи! Пока!
.