Смекни!
smekni.com

Аутентификация пользователей (стр. 2 из 2)

инструкция_1;

else

инструкция_2;

Действие инструкции следующее: если логическое_выражение истинно, то выполняется инструкция_1, а иначе — инструкция_2.

Как и в любом другом языке, конструкция else может опускаться. В этом случае при получении ложного значения просто ничего не делается.

В качестве логического выражения применена логическая функция isset, которая проверяет, установлена ли переменная, логический оператор для проверки булевых условий НЕ (!) и И (and или &&):

(!isset($_POST ['login'])&&!isset($_POST ['pass']))

Листинг secretdb.php — применение MySQL для улучшения механизма аутентификации.

<?

$name = $_POST['name']

$password = $_POST['password']

if(!isset($name)&&!isset($password))

{

//Если имя и пароль не существуют, посетитель должен зарегистрироваться, т.е. ввести имя и пароль

?>

<h1>Пожалуйста зарегистрируйтесь</h1>

<p>Зарегистрировавшись, Вы получите доступ к защищенной странице.</p>

<form method = post action = "secretdb.php">

<table border = 1>

<tr>

<th>Имя</th>

<td> <input type = text name = name> </td>

</tr>

<tr>

<th>Пароль</th>

<td> <input type = password name = password> </td>

</tr>

<tr>

<td colspan =2 align = center>

<input type = submit value = "Вход">

</td>

</tr>

</table>

</form>

<?

}

else

{

//Подключиться к MySQL

$mysql = mysql_connect( 'localhost', 'root', '' );

if(!$mysql)

{

echo ' К базе данных не удалось подключиться.';

exit;

}

//Выбрать нужную базу данных

$mysql = mysql_select_db( 'auth' );

if(!$mysql)

{

echo ' Нужную базу данных не удалось выбрать.';

exit;

}

//Запрос к базе данных, чтобы проверить, существует ли соответствующая запись

$query = "select count(*) from auth where

name = '$name' and

pass = '$password'";

$result = mysql_query( $query );

if(!$result)

{

echo ' Запрос к базе данных не может быть осуществлен.';

exit;

}

$count = mysql_result( $result, 0, 0 );

if ( $count > 0 )

{

//Комбинация имени и пароля посетителя правильная

echo "<h1> Эта страница для зарегистрированных пользователей!</h1>";

echo " Мы рады тому, что Вы посетили нашу страничку.";

}

else

{

// Комбинация имени и пароля посетителя неправильная

echo "<h1> ВНИМАНИЕ!</h1>";

echo " Вы ввели неправильно имя и пароль.";

}

}

?>

Используемую в примере базу данных можно создать, подключившись к MySQL как пользователь root и запустив показанный в листинге 14.3 сценарий.

Листинг 14.3. createauthdb.php —запросы для создания базы данных auth, таблицы auth и двоих пользователей.

create database auth;

use auth;

create table auth (

name varchar(10) not null,

pass varchar(30) not null,

primary key (name)

);

insert into auth values

('user', 'pass');

insert into auth values

( 'testuser', password('test123') );

grant select, insert, update, delete

on auth.*

to webauth@localhost

identified by 'webauth';