Работа с сессиями в php [Немного практики]

Тема в разделе "PHP", создана пользователем Fatal Error, 27 июл 2014.

  1. TopicStarter Overlay
    Fatal Error

    Fatal Error Новичок

    Регистрация:
    27.07.14
    Сообщения:
    7
    Симпатии:
    9
    Баллы:
    10
    Пол:
    Мужской
    post-1348-0-57563500-1399219208.jpg |


    Решил продолжить предыдущую статью практическим уроком, если это можно таковым назвать [​IMG]

    Сейчас мы напишем небольшой сайтик,состоящий из 3 страниц:
    ● Главная (index.php)
    ● Админпанель (admin.php)
    ● Форма входа (enter.php)

    Для того, чтобы мы могли работать с сессиями, на нужна форма входа.
    Рассмотрим файл enter.php

    Откроем тэг php


    PHP:
    <?php

    откроем сессию и заведем пользователя, которого будем авторизовать


    Код:
    session_start();
    $admin = 'admin';
    $pass = 'admin';

    теперь сделаем саму форму входа

    Код:
    echo "<p><a href='index.php'>Главная</a> | <a href='admin.php'>Админпанель</a> | <a href='enter.php'>Авторизация</a></p>
        <hr>
        <h2>Форма входа</h2>
        <br />
        <form method='post'>
            Имя: <input type='text' name='user' /><br />
            Пароль: <input type='password' name='pass' /><br />
            <input type='submit' name='submit' value='Войти' />
        </form>
        <hr>";

    а над ней обработчик данных, введенных в форме

    Код:
    if($_POST['submit']){
        if($admin == $_POST['user'] AND $pass == $_POST['pass']){
            $_SESSION['admin'] = $admin;
            header("Location: admin.php");
            exit;
        }else echo '<p>ERROR!</p>';
    }

    и над обработчиком вставим это (эта штука проверяет, стартовала ли сессия, если да, то она перенаправляет нас на страницу admin.php)


    Код:
    if($_SESSION['admin']){
        header("Location: admin.php");
        exit;
    }

    ну и, собственно, закроем тэг php


    PHP:
    ?>

    //************************//

    Рассмотрим файл index.php

    Откроем тэг php


    PHP:
    <?php

    Вверху страницы расположим меню

    Код:
    echo "<p><a href='index.php'>Главная</a> | <a href='admin.php'>Админпанель</a> | <a href='enter.php'>Авторизация</a></p>";
    ?>

    Ниже разместим какую-нибудь информацию


    Код:
    echo "<hr>
        <h2>Главная страница</h2>
        <h3>Урок написан Валентином Третьяковым<h3>
        <hr>";

    И еще ниже какой-нибудь текст, который в будущем скроем от посторонних глаз


    Код:
    echo "<a href='admin.php'>Невидимый текст</a>";
    

    ну и, собственно, закроем тэг php

    PHP:
    ?>

    теперь перейдем к самому интересному:
    как же нам скрыть текст от неавторизованных пользователей?
    Очень просто!
    Нам нужно всего-лишь проверить, авторизован пользователь или нет.
    Получится следующее


    Код:
    if($_SESSION['admin']){
        echo "<a href='admin.php'>Невидимый текст</a>";
    }

    //************************//

    В файле admin.php нет ничего такого, чтобы мы не рассмотрели
    Поэтому я просто прицеплю код всей страницы.

    PHP:
    <?php
    session_start
    ();
    if(!
    $_SESSION['admin']){
        
    header("Location: enter.php");
        exit;
    }

    if(
    $_SESSION['admin']){
        echo 
    "<p><a href='index.php'>Главная</a> | <a href='admin.php'>Админпанель</a> | <a href='enter.php?do=logout'>Выход</a></p>";
    }else{
        echo 
    "<p><a href='index.php'>Главная</a> | <a href='admin.php'>Админпанель</a> | <a href='enter.php'>Авторизация</a></p>";
    }
    echo 
    "<hr>
        <h2>Админпанель</h2>
        <h3>Урок написан Fatal Error<h3>
        <hr>"
    ;
    if(
    $_SESSION['admin']){
        echo 
    "<a href='admin.php'>Невидимый текст</a>";
    }  
    ?>
    wolf84, Xpert™, forZone и ещё 1-му нравится это.
  2. forZone

    forZone Модератор Команда форума

    Регистрация:
    21.01.13
    Сообщения:
    632
    Симпатии:
    108
    Баллы:
    275
    Пол:
    Мужской
    ICQ:
    8883575
    Буду рад, если объяснишь как сделать авторизацию по данным из БД.

Поделиться этой страницей