Разумное использование сессий в PHP

PHP tips

Не используйте суперглобальный массив $_SESSION напрямую.

1
2
$_SESSION['user'] = $user;
$user = $_SESSION['user'];

Данный способ может породить ряд проблем.

1) Каждый раз при получении пользователя придется проверять на существование данный ключ массива

1
2
3
if ( isset($_SESSION['user']) ){
 
}

10 раз обращаетесь к массиву — 10 раз придется использовать isset()

2) Конфликт имен. Сайт может состоять из различных модулей. Например Админка может представлять отдельный модуль. И соответственно может получиться так что $_SESSION['user'] может использоваться и на самом сайте и в админке (с разной логикой).

Избежать подобного можно следующим образом:
(код из видеоурока)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
define('APP_ID' , 'application_admin');
 
function setSession($key, $value)
{
 $k = APP_ID . '_' . $key;
 $_SESSION[$k] = $value;
  
 return true;
}
 
function getSession($key)
{
 $k = APP_ID . '_' . $key;
  
 if( isset($_SESSION[$k]) ) {
 return $_SESSION[$k];
 }
  
 return false;
}
 
 
setSession('userName', 'Ivan');
 
echo 'UserName = ' . getSession('userName');
 
print_r($_SESSION);

 

Добавить отзыв (пожелание, комментарий)

Marcel Osoian
Хороший совет.