Login php как сделать
Изучаем простой пример создания безопасного логина в PHP и аутентификации пользователя. Включает в себя разбор кода и подробные инструкции.
Создание страницы авторизации на PHP
Для создания страницы авторизации на PHP необходимо сначала создать HTML-форму с полями для ввода логина и пароля. Например, ниже приведен пример формы:
<form action="login.php" method="post">
<input type="text" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<input type="submit" value="Login">
</form>
Затем нам нужно создать скрипт PHP для обработки формы. Для этого мы используем метод POST для передачи данных, которые пользователь ввел в форме. Наш скрипт должен получать данные и проверять их с данными из базы данных. Если данные совпадают, то пользователь будет успешно авторизован. Если же данные не совпадают, то пользователь будет перенаправлен на страницу с ошибкой. Ниже приведен пример скрипта PHP для авторизации:
<?php
// Переменные с формы
$username = $_POST['username'];
$password = $_POST['password'];
// Параметры для подключения
$db_host = "localhost";
$db_user = "root"; // Логин БД
$db_password = ""; // Пароль БД
$db_base = 'test'; // Имя БД
$db_table = "users"; // Имя Таблицы БД
// Подключение к базе данных
$mysqli = new mysqli($db_host,$db_user,$db_password,$db_base);
// Если есть ошибка соединения, выводим её и убиваем подключение
if ($mysqli->connect_error) {
die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
// Вытаскиваем из БД запись, у которой логин равняеться введенному
$result = $mysqli->query("SELECT * FROM ".$db_table." WHERE login='$username'");
$user = $result->fetch_assoc();
// Сравниваем пароли
if($user['password'] == $password) {
// Генерируем случайное число и шифруем его
$hash = md5(generateCode(10));
// Записываем в БД новый хеш авторизации и IP
$mysqli->query("UPDATE ".$db_table." SET hash='".$hash."' ".$insip." WHERE user_id='".$user['user_id']."'");
// Ставим куки
setcookie("id", $user['user_id'], time()+60*60*24*30);
setcookie("hash", $hash, time()+60*60*24*30);
// Переадресовываем браузер на страницу проверки нашего скрипта
header("Location: check.php"); exit();
}
else {
print "Вы ввели неправильный логин/пароль";
}
?>
В примере выше мы используем функцию generateCode() для генерации случайной строки. Эта функция может выглядеть следующим образом:
<?php
// Функция для генерации случайной строки
function generateCode($length=6) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
$code = "";
$clen = strlen($chars) - 1;
while (strlen($code) < $length) {
$code .= $chars[mt_rand(0,$clen)];
}
return $code;
}
?>
После этого нам нужно создать скрипт для проверки авторизации. Этот скрипт будет проверять наличие куки и данные из базы данных. Если данные совпадают, то пользователь будет перенаправлен на страницу с его профилем. В противном случае, пользователь будет перенаправлен на страницу авторизации. Ниже приведен пример скрипта для проверки авторизации:
<?php
// Параметры для подключения
$db_host = "localhost";
$db_user = "root"; // Логин БД
$db_password = ""; // Пароль БД
$db_base = 'test'; // Имя БД
$db_table = "users"; // Имя Таблицы БД
// Подключение к базе данных
$mysqli = new mysqli($db_host,$db_user,$db_password,$db_base);
// Если есть ошибка соединения, выводим её и убиваем подключение
if ($mysqli->connect_error) {
die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
// Принимаем данные с куки
$user_id = $_COOKIE['id'];
$hash = $_COOKIE['hash'];
// Вытаскиваем данные из БД
$result = $mysqli->query("SELECT *,INET_NTOA(user_ip) AS user_ip FROM ".$db_table." WHERE user_id = '$user_id' LIMIT 1");
$userdata = $result->fetch_assoc();
// Сравниваем полученные данные с данными из базы данных
if(($userdata['user_hash'] !== $hash) OR ($userdata['user_id'] !== $user_id))
{
// Если данные не сошлись
setcookie("id", "", time() - 3600*24*30*12, "/");
setcookie("hash", "", time() - 3600*24*30*12, "/");
print "Хм, что-то не получилось";
}
else
{
// Если данные совпадают, проверяем активирован ли аккаунт
if($userdata['user_active'] == 0)
{
// Если не активирован, то просим активировать
print "Аккаунт не активирован. Пройдите по ссылке, указанной в письме";
}
else
{
// Если активирован, проверяем данные для проверки подлинности
$browser = getBrowser($_SERVER['HTTP_USER_AGENT']);
if($userdata['user_browser'] != $browser)
{
// Если браузер не сошелся
print "Вход в систему невозможен";
}
else
{