Видалення змінних сесії

Окрім уміння реєструвати змінні сесії (тобто робити їх глобальними впродовж всього сеансу роботи), корисно також уміти видаляти такі змінні і сесію в цілому.

Функція session_unregister(имя_переменной) видаляє глобальну змінну з поточної сесії (тобто видаляє її із списку зареєстрованих змінних). Якщо реєстрація проводилася з допомогою $_SESSION ($HTTP_SESSION_VARS для версії PHP 4.0.6 і раніших), то використовують мовну конструкцію unset(). Вона не повертає жодного значення, а просто знищує вказані змінні.

Де це може згодитися? Наприклад, для знищення даних про відвідувача (зокрема, логіна і пароля) після його відходу з секретної сторіночки. Якщо правильний логін і пароль збережуться і вікно браузеру після відвідин сайту не закрили, то будь-який інший користувач цього комп'ютера зможе прочитати закриту інформацію.

У файл secret_info.php додамо строчку для виходу на головну сторінку:

<?php

// ... php код

?>

<html>

<head>

<title>Secret info</title>

</head>

...

// тут розташовується

// секретна інформація :)

<а href="index.php">На главную</a>

</html>

У Index.php знищимо логін і пароль, введені раніше:

<? session_start();

session_unregister('passwd');

// знищуємо пароль

unset($_SESSION['login']);

// знищуємо логін

print_r($_SESSION);

// виводимо глобальні змінні сесії

?>

<html>

<head>

<title>My home page</title>

</head>

... // домашня сторіночка </html>

Тепер, аби попасти на секретну сторінку, потрібно буде знову вводити логін і пароль.

Для того, щоб скинути значення всіх змінних сесії, можна використовувати функцію session_unset();

Знищити поточну сесію цілком можна командою session_destroy(); Вона не скидає значення глобальних змінних сесії і не видаляє cookies, а знищує всі дані, що асоціюються з поточною сесією.

<? session_start(); // ініціалізували сесію $test = "Змінна

сесії"; $_SESSION['test']= $test;

// реєструємо змінну $test.

// якщо register_globals=on

// то можна використовувати

// session_register('test');

 

print_r($_SESSION);

// виводимо всі глобальні змінні

 

echo session_id();

// виводимо ідентифікатор сесії

 

echo "<hr>"; session_unset();

// знищуємо всі глобальні

// змінні сесії

print_r($_SESSION); echo session_id(); echo "<hr>";

session_destroy(); // знищуємо сесію print_r($_SESSION); echo

session_id(); ?>

В результаті роботи цього скрипта будуть виведений три рядки: у першій - масив з елементом test і його значенням, а також ідентифікатор сесії, в другий - порожній масив і ідентифікатор сесії, в третій - порожній масив. Таким чином, видно, що після знищення сесії знищується і її ідентифікатор, і ми більше не можемо ні реєструвати змінні, ні взагалі проводити які-небудь дії з сесією.

Безпека

Взагалі кажучи, слід розуміти, що використання механізму сесій не гарантує повної безпеки системи. Для цього потрібно приймати додаткові заходи. Звернемо увагу на проблеми з безпекою, які можуть виникнути при роботі з сесіями і, зокрема, з тими програмами, що ми написали.

По-перше, небезпечно передавати туди-сюди пароль, його можуть перехопити. Крім того, ми зареєстрували його як глобальну змінну сесії, значить, він зберігся в cookies на комп'ютері-клієнтові. Це теж погано. І взагалі, паролі і логіни по-хорошому повинні зберігатися в базі даних.

 








Дата добавления: 2016-04-02; просмотров: 749;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.011 сек.