PHP - авторизация доступа


Авторизация с помощью cookies - часть 2


/p>

Как cookie можно использовать для решения обсуждаемой в этой главе задачи - авторизации доступа? Да очень просто - запросив от посетителя логин и пароль, записать их в cookie, а потом на каждой странице "защищенной зоны" считывать их оттуда и проверять, имеются ли такие данные в файле паролей. Ну и поступать в соответствии с результатом такого сравнения - например, отправлять те браузеры, которые не смогли представить cookie с правильными логином и паролем, прямиком на страницу авторизации, посылая им с помощью PHP-функции Header заголовок Location с соответствующим параметром, как было показано выше для предыдущего варианта авторизации.

Вот фрагменты сценария, в которых видна технология использования cookies. На той странице, от-куда должен осуществляться вход в "защищенную зону", следует поставить простую форму для ввода логина и пароля (см.рис.8.6). Например, такую:

<FORM ACTION="up.php" METHOD=POST> Логин: <INPUT NAME="login" TYPE="text"><br> Пароль: <INPUT NAME="pass" TYPE="password"><br> <INPUT TYPE="submit" VALUE="Войти"></FORM>

Авторизация на основе cookies. Просто форма...

Рис.8.6. Авторизация на основе cookies. Просто форма...

На той странице, имя которой указано в параметре ACTION заголовка формы, введенные данные проверяются, и в том случае, если такие логин и пароль имеются в файле паролей, браузеру посетителя отсылается cookie, куда эти логин с паролем записываются.

<?php foreach (file("passw/passwr") as $k) { if (substr($k, 0, -2)=="$login $pass") { $rez=1;

И вот - сама установка cookie под именем auth. Ему устанавливается "время жизни" - 3600 секунд, то есть час.

SetCookie("auth","$login $pass",time()+3600);

} } ?>

Дальше должен находиться сценарий, который в зависимости от исхода авторизации - т.е. значения переменной $rez - выводит различную информацию. Например, можно отослать посетителя назад на исходную страницу командой Header ("Location..."), как в примере предыдущего раздела этой главы.




Начало  Назад  Вперед