лесоинженер

etxt.ru
Бесплатный курс по основам HTML

Библиотека скриптов PHP

 

2. Сессии

Задача: 1. Сделайте форму авторизации с полями "Логин",  "Пароль". 2. Если был введен логин "Admin" и пароль "mypass", то вывести сообщение "Здравствуйте, Admin!", иначе вывести сообщение о неверности логина и/или пароля. 3. При каждом обновлении страницы, если пользователь уже прошел авторизацию, должно выводиться приветствие, а если не прошел авторизацию (или уже вышел), то вывести форму авторизации. 4. Сделайте ссылку "Выход", при переходе на которую, пользователь для входа должен будет снова ввести логин и пароль. Обязательно поставьте редирект с этой страницы обратно (именно обратно, а не главную страницу, т.е. с использованием HTTP_REFERER).

Выполнение: Авторизованный пользователь попадет на страницу admin.php. Пользователь, не прошедший правильно авторизацию, попадет на страницу index.php. Страница для авторизации enter.php. На странице admin.php проверим есть ли нужная метка в сессии, т.е. есть ли определенная переменная сессии (также можно проверять равно ли значение сессионной переменной определенному значению). Если такой метки нет, значит пользователь, заходящий на эту страницу, не авторизован, а значит выполним его редирект на страницу index.php с сообщением о неудачной авторизации и с ссылкой на страницу авторизации enter.php с формой с именем и паролем. 

Прежде всего начали сессию, это необходимо при работе с сессиями. Создаем простое условие, которое можно прочитать так: «если в массиве $_SESSION не существует элемента Аdmin — будем выполнять блок действий, заключенный в операторные скобки». А в блоке кода при помощи функции header() производится редирект пользователя на страницу enter.php (это страница авторизации). После функции header() завершается выполнение скрипта при помощи функции exit(). Если же условие не выполнится, т.е., в массиве $_SESSION будет элемент Аdmin — значит, пользователь уже успешно авторизован, и надо пропустить блок действия в операторных скобках, т.е., никакого редиректа происходить не будет, и открывается запрошенная страница.

enter.php:

<?php
    session_start ();
    if ($_SESSION['admin'])
    {
        header ("Location: admin.php");
        exit;
    }
    $admin = 'Admin';
    $pass = 'mypass';
    if ($_POST['submit'])
    {
        if ($admin == $_POST['user'] && $pass == $_POST['pass'])
        {
            $_SESSION['admin'] = $admin;
            header ("Location: admin.php");
            exit;
        }
        else
        {
            header ("Location: index.php");
            exit;
        }
    }
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Сессии</title>
    </head>
    <body>
        <form action="" method="post">
            <p>
                Логин: <input type="text" name="user">
                Пароль: <input type="text" name="pass">                 
            </p>        
            <p>
            <input type="submit" name="submit">
            </p>
        </form>                  
    </body>
</html>

admin.php:

<?php  
        session_start ();        
        if ($_GET['k'] == 'ex')
        {
            unset ($_SESSION['admin']);
            session_destroy ();
        }    
        if (!$_SESSION['admin'])
        {
            header ("Location: enter.php");
            exit;
        }
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Сессии</title>
    </head>
    <body>
        <p>Здравствуйте, Admin!</p>
        <a href="admin.php?k=ex">Выход</a>
    </body>
</html>

 

index.php:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Сессии</title>
    </head>
    <body>
        <p>Неверен логин и/или пароль</p>
        <p>
           <a href="enter.php">Авторизация</a>                
        </p>             
    </body>
</html>

 

 

 

 

 

 

Создать бесплатный сайт с uCoz