Лістинг 6.18. authmain.php — Основна частина застосування аутентифікації

session_start();

if ($userid && $password)

{

// якщо користувач якраз намагається реєструватися

$db_conn = mysql_connect("localhost", "webauth", "webauth");

mysql_select_db("auth" $db_conn);

$query = "select * from auth where name='$userid'"

." and pass=password('$password')";

$result = mysql_query($query, $db_conn);

if (mysql_num_rows($result) >0 )

{// якщо користувач знайдений в базі даних

// зареєструвати його ідентифікатор

$valid_user = $userid;

session_register{"valid_user"); }

}

?>

<html><body><h1>Home page</h1>

<?

if (session_is_registered("valid_user"))

{

echo "You are logged in as: $valid_user <br>";

echo "<a href=\"logout.php\">Log out</a><br>";

}

else

{

if (isset($userid)) {

// якщо користувач намагався реєструватися

// але виникла помилка

echo "Could not log you in"; }

else {

// якщо користувач або не намагався реєструватися

// або покинув сайт

echo "You are not logged in.<br>"; }

// форма для аутентифікації

echo "<form method=post action=\"authmain.php\">";

echo "<table>"; echo "<tr><td>Userid:</td>";

echo "<td><input type=text name=userid></td></tr>";

echo "<tr><td>Password:</td>";

echo "<td><input type=password name=password></td></tr>";

echo "<tr><td colspan=2 align=center>" ;

echo "<input type=submit value=\"Log in\"></td></tr>" ;

echo "</table></form>" ;

}

?> <br>

<а href="members_only.php">Members section</a>

</body></html>

Даний сценарій відрізняється складною (в розумних межах) логікою, але інакше не можна: адже він здійснює представлення форми для вхідної реєстрації і її обробку.

Робота цього сценарію зосереджена довкола змінною сеансу $valid_user. Основна ідея тут полягає в наступному: якщо хто-небудь успішно прошел процедуру вхідної реєстрації, ми реєструємо змінну сеансу з ім'ям $valid_user, яка містить идентифика­тор користувача.

Так що ж насамперед виконується в сценарії? Правильно, виклик session_start(). Ця функція завантажує змінну сеансу $valid_user, якщо остання була зареєстрована.

При першому проході за сценарієм жоден з умовних операторів if не спрацює і неудачливому користувачеві до кінця сценарію залишиться лише уважно прочитати повідомлення про те, що він не прошел процедуру вхідної реєстрації. Після цього ми надаємо йому форму, за допомогою якої він зможе це зробити:

echo "<form method=post action=\ "authmain.php\ ">";

echo "<table>";

echo "<tr><td>Userid:</td>";

echo "<td><input type=text name=userid></td></tr>" ;

echo "<tr><td>Password:</td>";

echo "<td><input type=password name=password></td></tr>" ;

echo "<tr><td colspan=2 align=center>" ;

echo "<input type=submit value=\ "Log in\ "></td></tr>" ;

echo "</table></form>";

Коли користувач натискуватиме кнопку відправки (Submit), сценарій викликається заново і знов все починається з початку. Цього разу в нашому розпорядженні будуть ім'я користувача і пароль, що дозволяють його аутентифицировать (вони зберігаються в $userid і $password). Якщо ці змінні встановлені, переходиться до блоку аутентифікації:

if ($userid && $password) {

// якщо користувач якраз намагається реєструватися

$db_conn = mysql_connect("localhost", "webauth", "webauth");

mysql_select_db("auth" $db_conn);

$query = "select * from auth "

."where name='$userid' " . " and pass=password('$password')";

$result = mysql_query($query, $db_conn);

І ось ми підключаємося до бази даних MYSQL і перевіряємо ім'я користувача і пароль. Якщо в базі даних існує відповідність цій парі, ми реєструємо змінну $valid_user, яка містить ідентифікатор для конкретного користувача. Таким чином, ми знаємо, хто увійшов до системи і, відповідно, його відстежуватимемо.

if (mysql_num_rows($result) >0) {

// якщо користувач знайдений в базі даних

// зареєструвати його ідентифікатор

$valid_user = $userid;

session_register("valid_user"); }

Оскільки вже відомо, хто зараз відвідує сайт, то повторно надавати йому aорму вхідної реєстрації немає необхідності. Замість цього ми повідомляємо користувача, що ми знаємо, хто він такий, і даємо йому можливість виходу з системи:

if (session_is_registered("valid_user")) {

echo "You are logged in as: $valid user <br>";

echo "<a href=\"logout.php\">Log out</a><br>"; }

Якщо ж при спробі провести вхідну реєстрацію користувача, ми з якоїсь причини терпимо невдачу, то у нас є ідентифікатор користувача, але немає змінної $valid_user, і нічого не залишається, окрім як видати повідомлення про помилку:

if (isset($userid)) {

// якщо користувач намагався реєструватися, але виникла помилка

echo "Could not log you in"; }

Оскільки $valid_user є зареєстрованій змінній сеансу, її не можна перезаписати шляхом передачі іншого значення через URL, наприклад так:

members_only.php?valid_user=testuser

З основним сценарієм, схоже, все зрозуміло. А тепер поглянемо на сторінку Members. Код цього сценарію показаний в лістингу 6.19.








Дата добавления: 2016-04-02; просмотров: 566;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.