Реєстрація змінних сесії

Реєстрація змінних сесії

Однак від самого ідентифікатора та імені сесії нам користі для вирішення наших завдань небагато. Ми ж хочемо передавати і зберігати протягом сесії наші власні змінні (наприклад, логін і пароль). Для того щоб цього досягти, потрібно просто зареєструвати свої змінні:

session_register (ім’я_змінної1, 
ім’я_змінної2, ...);

Увага! session_register є застарілою і у версії PHP 6.0 взагалі вилучена. Її використання вкрай не бажано. Замість session_register слід використовувати $_SESSION.

Зауважимо, що реєструються не значення, а імена змінних. Зареєструвати змінну достатньо один раз на будь-якій сторінці, де використовуються сесії. Імена змінних передаються функції session_register () без знаку $. Усі зареєстровані таким чином змінні стають глобальними (тобто доступними з будь-якої сторінки) протягом даної сесії роботи з сайтом.

Зареєструвати змінну також можна, просто записавши її значення в асоціативний масив $ _SESSION, тобто написавши

$_SESSION ['Ім'я_змінної'] = 
'Значення_змінної';

У цьому масиві зберігаються всі зареєстровані (тобто глобальні) змінні сесії.

Доступ до таких змінних здійснюється за допомогою масиву $_SESSION ['ім'я_змінної'] (або $HTTP_SESSION_VARS ['ім'я_змінної'] для версії PHP 4.0.6 і більш ранніх). Якщо ж в налаштуваннях php включена опція register_globals, то до сесійних змінних можна звертатися ще й як до звичайних змінних, наприклад так: $ім'я_змінної.

Якщо register_globals = off (відключені), то користуватися session_register () для реєстрації змінних переданих методами POST або GET, не можна, тобто це просто не працює. І взагалі, не рекомендується одночасно використовувати обидва методи реєстрації змінних, $_SESSION і session_register ().

Приклад реєстрація змінних

Зареєструємо логін і пароль, які вводяться користувачем на сторінці авторизації.

<? 
session_start (); 
// Створюємо нову сесію або 
// Відновлюємо поточну 
if (! isset ($_GET ['go'])){ 
echo "<form> 
Login: <input type=text name=login> 
Password: <input type = password 
name = passwd> 
<input type=submit name=go value=Go> 
</ Form> "; 
} Else { 
$_SESSION ['Login']=$_ GET [' login ']; 
// Реєструємо змінну login 
$_SESSION ['Passwd']=$_ GET [' passwd ']; 
// Реєструємо змінну passwd 
// Тепер логін і пароль - глобальні 
// Змінні для цієї сесії 
if ($_GET ['login']==" pit "&& 
$_GET ['Passwd']==" 123 ") { 
Header ("Location: secret_info.php"); 
// Перенаправляємо на сторінку 
// Secret_info.php 
} Else echo "Невірний введення, 
спробуйте ще раз <br> "; 

print_r ($_SESSION); 
// Виводимо всі змінні сесії 
?>