Листинг 12.3a. authorize.php
Теперь, попав на страничку secret_info.php, да и на любую другую страницу сайта, мы сможем работать с введенными пользователем логином и паролем, которые будут храниться в массиве $_SESSION. Таким образом, если изменить код секретной странички (заметьте, мы переименовали ее в secret_info.php) так:
<?php session_start(); // создаем новую сессию или // восстанавливаем текущую print_r($_SESSION); // выводим все переменные сессии ?> <html> <head><title>Secret info</title></head> <body> <p>Здесь я хочу делиться секретами с другом Петей. </body> </html>
Листинг 12.3b. secret_info.php
То мы получим в браузере на секретной странице следующее:
Array ( [login] => pit [passwd] => 123 ) Здесь я хочу делиться секретами с другом Петей.
В итоге получим список переменных, зарегистрированных на authorize.php и, собственно, саму секретную страничку.
Что это нам дает? Допустим, хакер хочет прочитать секреты Васи и Пети. И он как-то узнал, как называется секретная страничка (или странички). Тогда он может попытаться просто ввести ее адрес в строке браузера, минуя страницу авторизации (ввода пароля). Чтобы избежать такого проникновения в наши тайны, нужно дописать всего пару строк в код секретных страничек:
<?php session_start(); // создаем новую сессию или // восстанавливаем текущую print_r($_SESSION); // выводим все переменные сессии if (!($_SESSION['login']=="pit" && $_SESSION['passwd']==123)) // проверяем правильность // пароля-логина Header("Location: authorize.php"); // если ошибка, то перенаправляем на // страницу авторизации ?> <html> <head><title>Secret info</title></head> ... // здесь располагается //секретная информация :) </html>
Листинг 12.3c. 2-я версия secret_info.php