Справочники, инструменты, документация

PHP: Вход на сайт

Первым делом нам обязательно потребуется условие, которое будет разбивать нашу страницу на две части: не авторизованную и авторизованную.
if($code != $prcode){
// Если пользователь не авторизованный
} else {    
// Если пользователь авторизованный
}

Переменная $code будет хранить в себе глобальные массивы $_POST и $_SESSION. В переменной $prcode мы будем хранить наш пароль. Теперь, для не авторизованного пользователя между первым условием если, мы поместим форму для входа на сайт.

echo'<form action="/" method="post">
 <input type="text" placeholder="Введите ключ" name="code">
 <button type="submit">Войти</button>
</form>';

Как видим, что поле под название code, которое мы будем посылать глобальному массиву $_POST, затем получать ответ, обрабатывать его на ошибки: на пустоту, а также проверять его на совпадение с переменной нашего пароля $prcode, после этого только, будем сохранять авторизованного пользователя в сессию. Но для начала, давайте инициализируем ее.

@session_start();

Теперь пропишем наши переменные, одна из которых с нашим придуманным паролем, другая с пустым значением текста для вывода информационных сообщений, к примеру об ошибке авторизации.

$prcode = 123;
$text = '';

Далее мы должны принять поле под названием code в глобальный массив $_POST и обработать. То же самое нужно проделать для глобального массива $_SESSION.

if(isset($_POST['code'])){
    $code = $_POST['code'];
}

if(isset($_SESSION['code'])){
    $code = $_SESSION['code'];
}

После чего проверим скрипт на ошибки, а именно на пустоту, а также на правильность в совпадении поля под названием code с нашим паролем $prcode.

if(isset($_POST['code'])){
    if(empty($_POST['code'])!=$prcode){
        $text = 'Ошибка! Не правильный ключ';
    }
    else{
        $text = 'Ошибка! Введите ключ';
    }
}

Как вы можете заметить, что сначала я проверяю на существование глобального массива $_POST при получении поля code, если поле существует, то я создаю еще одно условие, которое проверяет на пустоту поля code, а затем сравниваю его с нашим паролем $prcode, после чего только получаю ответ.

В переменную $text записываю все допустимые ошибки и сообщения, это помогает мне понимать, как работает данный скрипт, какие ошибки он выводит, какие сообщения показывает. Не забудьте вывести текстовый блок ошибок в конце условия.

echo $text;

Теперь, когда наша первая часть с авторизацией готова, мы вставляем в авторизованную часть пользователя, к примеру, следующий код, который имеет, кнопку выход и приветствие для входа. Чтобы сессия при обновлении страницы не слетала, не забудьте ее установить.

$text = 'Вы зашли в секретный раздел! Выйти';
$_SESSION['code'] = $code;

Ну и напоследок, нам осталось сделать только выход. Перед тем, как Вы запишите все данные в сессию, можете поставить ее на уничтожение. Подчеркиваю - только перед этим, а не после! Для примера, я решил использовать уничтожение по ссылке, через $_GET передачу, обращаясь напрямую к полю exit со значением true. Вы уж решите для себя сами, как стоит поступить. Можно, к примеру, за морочиться с формой.

if($_GET['exit']=='true'){
    unset($_SESSION['code']);
}

Скачать пример