Здравствуйте, коллеги по web-алхимии!
Вот такая функция, простая и рабочая создана мной для своих целей.
Часть первая (html-код)
<form action="" method=post>
<input type="text" id="login" name="login">
<input type="password" id="password" placeholder="пароль" name="password" oninput="var input = document.getElementById('password').value;heshmd5=md5(input);document.getElementById('md5pass').value = heshmd5;">
<input type=hidden id="md5pass" name="md5pass">
<button type="submit" class="button success columns expand">Войти</button>
</form>
Здесь на поле ввода пароля навешен js-скрипт, который при изменении значения в поле (ну, когда вы вводите пароль), хеширует значение в md5 и тут же присвает его в значение скрытого поля формы с id=md5pass
Таким образом сам пароль на сервер не отсылается, а передается только его хеш. Который можно усложнить добавлением соли, то есть прибавив к паролю какое-то секретное значение.
Здесь добавлю только, что функции md5 в JS не бывает, поэтому я пользовался функцией взятой отсюда .
Часть вторая (PHP)
В свой index.php я вставил инклюдом login.php, который выглядит так
<?php
$login=$_POST['login']; // получаем значение post от формы
$md5pass=$_POST['md5pass']; // получаем значение post от формы
$filename = '$_POST['login'].'/conf.php'; // конфигурируем предполагаемый путь к директории пользователя
if (file_exists($filename)){// если путь к директории существует, то инклудим его
include ("$filename");
}
session_start();// открываем сессию. Это нужно на случай если ранее пользователь уже авторизировался
if(isset($_SESSION['login'])){// если уже авторизирован, то...
$auth="Авторизированно";
}elseif(file_exists($filename)&$md5pass==$pass){ // если путь к директории пользователя существует и хеши паролей совпадают, то ...
$auth="Авторизация успешна";
$_SESSION['login'] = $login;// инициализируем переменную в сессии
}elseif(file_exists($filename)&$md5pass!=$pass){// хеши пароля не совпали и тогда ...
$auth="Авторизация неуспешна";
}elseif (!file_exists($filename)&isset($_POST['md5pass'])){// нет директории такого пользователя, а значит ...
$auth="Отсутствует пользователь";
}elseif(!isset($_GET["logout"])&!isset($md5pass)){// если это не разлогинивание и если поля формы не переданы, то это первоначальная загрузка страницы
$auth="Неавторизированный вход";
}
if (isset($_GET["logout"])){// Разлогинились передачей get-запроса
$auth="Разлогинивание успешно";
session_unset();// уничтожили сессию
session_destroy();
header("Location: index.php");
exit(); // после передачи редиректа всегда нужен exit или die
// иначе выполнение скрипта продолжится.
}
/*
echo $login;// для проверки
echo "->";
echo $md5pass;
echo "<br>";
echo $auth;
*/
?>
Часть третья - использование внутри файлов и скриптов
Там где нужно разделить авторизированный и неавторизированный допуск, используем конструкцию
<? if (isset($_SESSION['login'])){
echo " Здесь, то что относится к аккаунту пользователя";
}else{
echo " Здесь, то что видно всем";
}
Авторизация пользователей на PHP
- Поделиться:
- Google+
- ВКонтакте
- Одноклассники
Краткий вид:
Авторизация пользователей на PHPЗдравствуйте, коллеги по web-алхимии! Вот такая функция, простая и рабочая создана мной для своих целей. Часть первая (html-код) <form action="" method=post> <input type… Read More
Бесплатный хостинг и бесплатный домен 2-го уровняХостинг с PHP, MySQL, FTP, неограниченное количество доменов 3-го уровня, 1гБ памяти https://byet.host/ Домены 2-го уровня бесплатно на http://dot.tk Авторизироваться лучше с G… Read More
0 коммент.:
Отправить комментарий