Авторизация
Сейчас мы и узнаем, тот ли наш посетитель, за кого себя выдает. Алгоритм наших действий: сначала показываем посетителю форму авторизации, предлагаем написать в ней логин и пароль и отправить на проверку. Затем, если посетитель правильный (есть такой в системе с таким же логином и паролем) допускаем его к сокрытому содержимому, а если нет - сообщаем, что вход закрыт. Формы для общения с посетителем будем формировать динамически, поэтому код скрипта выглядит немного необычно:
<?php
$login=trim($_POST['login']);
$password=trim($_POST['password']);
$pressed=$_POST['pressed'];
session_start();
$log=$login."|".$password;
$fl = @fopen ("logs", "r");
$dat_log = @fread ($fl, filesize("logs"));
if (strstr($dat_log,$log)){$auth="passed";}else{$auth="";}
$_SESSION['pw']=$auth;
if($pressed){
if($auth=="passed"){echo "<center><form action=page.php><input type=submit value=Продолжить></form></center>";}else {echo "<center><font color=#ff0000>Неправильный логин или пароль! Доступ закрыт.</font></center>";}}
else{echo "<center><table><tr><td colspan=2 align=center><h3>Авторизация</h3></td></tr><tr><td><form action=enter.php method=POST>Логин: </td><TD><input type=text name=login></td></tr><tr><td>Пароль: </td><TD><input type=password name=password ><input type=hidden name=pressed value=pressed ></td></tr><tr><td colspan=2 align=center><input type=submit value=Отправить></form></td></tr></table></center>";}
?>
Теперь по порядку. Сначала из формы получаем логин и пароль, отстригая лишние пробелы. Кроме этого - еще одно значение, которое помещаем в переменную $pressed. Теперь скрипт будет знать, нажималась ли кнопка в форме:
$login=trim($_POST['login']);
$password=trim($_POST['password']);
$pressed=$_POST['pressed'];
Дальше строкой
session_start();
открываем сессию. Сессия в PHP позволит скрипту записывать и передавать другим скриптам переменные в течении времени, пока открыта сессия. После этого:
$log=$login."|".$password;
$fl = @fopen ("logs", "r");
$dat_log = @fread ($fl, filesize("logs"));
if (strstr($dat_log,$log)){$auth="passed";}else{$auth="";}
полученные от пользователя логин и пароль объединяем в строку, открываем файл, в котором хранятся данные зарегистрированных посетителей (только для чтения) и проверяем, есть ли там такой логин и пароль. Для проверки используем функцию strstr(), чтобы различить строчные и заглавные буквы. Если логин и пароль совпадают с зарегистрированными, присваиваем переменной $auth значение passed, если нет - записываем в нее пустоту. И после этого значение переменной $auth записываем в переменную сессии pw:
$_SESSION['pw']=$auth;
Далее: если посетитель нажимал кнопку отправки данных:
if($pressed){
и если он успешно прошел авторизацию, показываем ему форму с единственной кнопкой, нажав на которую, он попадет туда, куда так хочет попасть (у нас - это страница page.php):
if($auth=="passed"){echo "<center><form action=page.php><input type=submit value=Продолжить></form></center>";}
а если нет - то сообщаем, что входа нет:
else {echo "<center><font color=#ff0000>Неправильный логин или пароль! Доступ закрыт.</font></center>";}}
Последняя фигурная скобка означает конец проверки условия нажатия кнопки и, если кнопка не нажималась, показываем форму авторизации:
else{echo "<center><table><tr><td colspan=2 align=center><h3>Авторизация</h3></td></tr><tr><td><form action=enter.php method=POST>Логин: </td><TD><input type=text name=login></td></tr><tr><td>Пароль: </td><TD><input type=password name=password ><input type=hidden name=pressed value=pressed ></td></tr><tr><td colspan=2 align=center><input type=submit value=Отправить></form></td></tr></table></center>";}
Теперь - как устроена страница, куда после авторизации придет посетитель:
<?php
session_start();
$pw="";
$pw=$_SESSION['pw'];
if($pw!="passed") die ("<center><font color=#ff0000 size=+2>Доступ закрыт</font></center>");
?>
<HTML>
<body>
Здесь - то, что можно показать посетителю, если он является зарегистрированным пользователем и успешно прошел авторизацию.
</body>
</HTML>
Проверка авторизованности происходит в самом начале - открываем скрипту доступ к текущей сессии, записываем в переменную $pw пустоту (а можно и не записывать) и извлекаем из сессии ее значение:
<?php
session_start();
$pw="";
$pw=$_SESSION['pw'];
Потом - проверка. Если авторизация не пройдена (значение переменной $pw отличается от passed), сообщаем об этом пользователю красными буквами и завершаем работу скрипта (если не ... - то мрем с последним словом, которое в скобках и кавычках):
if($pw!="passed") die ("<center><font color=#ff0000 size=+2>Доступ закрыт</font></center>");
Проверяем работу. Похоже? Идем дальше.