На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Вход по паролю на PHP и авторизация через куки

Иногда мне приходится объяснять принцип работы с куками на разных языках программирования, и нередко это кажется сложным для новичков. На самом деле ничего сложного нет. В этой статье я приведу рабочий пример работы с куками на PHP и авторизации для сайта. Бонусом мы подключим защиту от взлома – рекапчу от гугла.

Итак, вам для чего-то понравилось закрыть доступ к некоторому содержимому на сайте, предположим странице админки. Самый простой способ – это его запаролить. Раньше я нередко использовал для решения данной задачи файл .htaccess – отлично работает для предотвращения несанкционированного доступа к целому сайту или определённой директории. Но у htaccess есть некоторые проблемы переносимости, а также не самая простая процедура смены пароля-логина. Не говоря уж о масштабируемости и мультдоступе.

Так что давайте создадим вход по логину и запоминание целиком на PHP и куках. Код:

if (isset($_COOKIE["pass"]) && $_COOKIE["pass"]==$pass){
Сначала проверяем, существует ли кука с названием “pass” и равна ли она некоему значению. Сразу скажу: хранить пароль в открытом виде небезопасно, используйте хотя бы md5 шифрование с солью. Далее, если все хорошо, то что-то делаем или показываем, а вот дальше подключаем рекапчу:

else {
?>
<script src='https://www.google.com/recaptcha/api.js'></script>
<form action="<?php echo $_SERVER["PHP_SELF"];?>" method="POST">
<input name="password" type="password" size="45"/>
<input class="submit" type="submit" value="Войти"/>
<div class="g-recaptcha" data-sitekey="публичный_ключ "></div>
</form>
Обработку формы ведем на той же странице, так что если есть пост-запрос:

if (isset($_POST["password"])) {
получаем ответ от капчи
$recaptcha=$_POST['g-recaptcha-response'];	
if(!empty($recaptcha)){
$google_url="https://www.google.com/recaptcha/api/siteverify";
$secret="секретный_ключ";
$ip=$_SERVER['REMOTE_ADDR'];
$url=$google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
Инициализируем curl и выполняем исходящее соединение:

$curl = curl_init();
curl_setopt($curl,CURLOPT_URL, $url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$res = curl_exec($curl);
curl_close($curl);
$res = json_decode($res, true);
Если капча пройдена:

if ($res['success'])  {
Если пароль верен:

if ($_POST["password"] == "пароль") {	
Ставим куки на месяц

setcookie("pass", $pass, time()+60*60*24*30);
И обновляем страничку:

header ("Location: ".$_SERVER["PHP_SELF"]);
exit();
}
}
}
}
Просто, не правда ли?




тегизаметки, php, авторизация, куки, пароль








Почему бан на фейсбуке и как избежать его повторно
Программа "Новогодняя ёлочка"


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Напишите и получите ответ в ближайшее время. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru