4 декабря 2017
10523
вход на сайт, вход под паролем, php

Вход на сайт PHP

PHP
Демонстрация » Скачать »

Вот уже и наступила зима, поздравляю всех с ее первыми деньками, снежок, узоры от мороза на стеклах окон, в общем все как надо) Совсем недавно, мне потребовалось разработать скрипт на php для входа под одним паролем на сайт, причем под постоянным паролем, без логина и прочих элементов авторизации. Можно так сказать, сделать вход в секретный раздел не используя при этом базу данных. Решил поделиться скриптом и с Вами, авось кому пригодится...

 

Перед началом данного урока, замечу, что на сайте я уже выкладывал подобного рода материалы, но они настолько старые, ведь использовался там скрипт полноценной авторизации с базой данных на обычном MySQL. Продолжать рубрику я не стал по нескольким адекватным причинам: Во-первых, потому что никто уже MySQL почти, за исключением редких случаев, не использует, во-вторых, это не целесообразно возвращаться в прошлое, а в-третьих, совершенно небезопасно по синхронности кода.

 

 

Но все же, кому если захочется почитать уроки по теме разработка системы управления сайтом, не буду против) В скором будущем, думаю на эти материалы появятся релизы, например, аналог разработки на PHP фреймворках Laravel или Yii2, а может просто сделать подобного типа реализация функционала на PDO. Предлагайте свои варианты, интересно будет поразмышлять)

 

И так, приступаем к самому 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']);
}

 

На этом у меня на сегодня все, всем спасибо за внимание!) Не забывайте подписываться на страницу в вк или на youtube канал, который после Нового Года буду стараться активно вести) Всем удачи и до скорого! Увидимся)