$res = mysql_query( “SELECT u_password FROM
users WHERE u_login=’$login’” );
$err = mysql_error();
lf($err==””) {
i
if(mysql_num_rows($res)>0) {
$crypted_pass = mysql_result($res, 0, “u_pass-
word” );
I
if(crypt($password, $crypted_pass) ==
$crypted_pass){
|
/ / пароль правильный
f
$_SESSION[“is_authorized”] = true;
$_SESSION[“login”] = $login;
Г
І
Щ
I
1
I
/
I
}
Г,!.
лопн:|
пароль:!
І»
..ї.
-:
Рис
.
З
і
і:
}
I
4 :;'
_____________________
if(@$_SESSION[“is_authorized”]){
/ / форма выхода
?>
<Н1>Привет, <? echo $_SESSION[“login”]
?></Н1>
<div><a href=”/logout.php”>Bbixofl</a></div>
<?
}
else{ / / форма входа
?>
<form method=”post”>
лопн:<input type=”text” name=”login” /> < b r/>
пароль:<тр^ type=”password” name=”pass-
word” / x b r />
I
<input type=”submit” value=”Bxofl” />
</form>
<?
}
?>
;.V
.4 ■
*
Этот скрипт устанавливает значе-
ния
переменных
сессии
is_author-
ized (true или false) и login в зависи-
мости
от того,
прошел
логин
про-
верку
или
нет.
Сначала
пользова-
тель
видит
форму
входа
( р и с .
3 ) ,
требующую ввести логин и пароль.
После указания логина,
пароля
и
нажатия кнопки “ВХОД” произойдёт
проверка, в результате которой при
успехе пользователь увидит страницу с приветст-
вием
( р и с . 4 ) .
Данный код можно вставить в каж-
дый скрипт,
в котором должна появиться форма
входа и проверка пользователя.
Также создадим скрипт logout.php для выхода и
поместим его вне папки admin. Все, что ему следу-
ет сделать - это сбросить значение переменной
сессии
is_authorized
в false
и
переадресовать
на
«
П ривет, ad m in
вы ход
[
Рис. 4
Ьт
I
скрипт, который его вызвал (реферер). Поэто-
ф
му скрипт этот очень прост:
*
I
<?
session_start();
$_SESSION[“is_authorized”] = false;
$_SESSION[“login”] =
header(“Location: “. $_SERVER[“ HTTPREFER-
ER”]);
,------------------------------
-
?>
После выполнения этого
скрипта
можно
делать
проверку,
правильный
ли
пароль
указал
пользова-
тель (в этом случае $_SES-
SION[“is_authorized”]
==
true) и соответственно да-
вать
или
не
давать
ему
доступ
к
административ-
ным функциям. Предлагаю
сделать
скрипты
для
до-
бавления исполнителей, альбомов и песен самим.
Это и будет вашим домашним заданием.
Аналогичным способом шифрования можно при
помощи скрипта формировать файл .htpasswd са-
мому. При этом как на одного пользователя, так и
на нескольких сразу, просто в каждой новой стро-
ке
очередной
пользователь
в
виде
l o g i n : c r y p t -
e d _ p a s s .
Если хранить пароли в массиве $Logins,
то сохранить все пары
login:password можно при
помощи следующего кода:
II $text =
$Logins[0][“login”].”:”.crypt($Logins[0][“pass”]);
for ($j=1 ;$j<count($Logins);$j++)
$text.=
“\n ”.$Logins[$j][“login”].”:”.crypt($Logins[$j][“pass”
$f_out = fopen(“.htpasswd”, “w”);
fwrite($f_out, $text);
fclose($f_out);
И запомните, что вовсе не обязательно таб-
лицу пользователей называть “users”. Можно
назвать как-то по-другому,
например,
“mem-
bers”. Главное, чтобы хакер, прощупавший ды-
ры
в
вашей
защите
не
смог быстро
обнару-
жить список паролей.
Хотя,
если он уже проник, то ему мало что
помешает.
Поэтому следует быть очень вни-
мательным и предусмотрительным при разра-
ботке систем безопасности, пускай даже, про-
стенького многопользовательского сайта.
Серия статей
“Мастер-класс по РНР”
в на-
шем журнале идет уже не один год, и могла по-
рядком наскучить тем читателям, которым это не
интересно. Поэтому просим откликнуться тех на-
ших
читателей,
которым
эта тема
интересна,
и
высказать нам свои отзывы и пожелания на стра-
нице
Контакты
сайта журнала
( h t t p : / / c o m p u t . c o m . u a / i n d e x . p h p ? a r t = 8 ) .
Владислав Демьянишин
J
предыдущая страница 38 Компьютер 2011 08 читать онлайн следующая страница 40 Компьютер 2011 08 читать онлайн Домой Выключить/включить текст