Куки для логина.
Создадим таблицу
login_tokens в БД.
id int(11) unsigned
primary AI
token varchar(64) unique
user_id in(11) unsigned
Создадим связь
между таблицами login_tokens и users.
user_id из таблицы
login_tokens связан с таблицей users и колонкой
id.
Ссылка на видео,
о том, как устанавливать связи
https://www.youtube.com/watch?v=2EmdP8sn_Aw
Идем в login.php
и устанавливаем куки.
openssl_random_pseudo_bytes
— Generate a pseudo-random string of bytes
openssl_random_pseudo_bytes(64);
// кол-во байт 64
Если он будет
передан в функцию, это будет содержать
логическое значение, определяющее, был
ли используемый алгоритм «криптографически
сильным», например, безопасным для
использования с GPG, паролями и т. Д.
ИСТИНА, если это так, иначе FALSE
bin2hex —
Преобразует бинарные данные в
шестнадцатеричное представление
<?php
ob_start(); // от
ошибки
include('classes/DB.php');
if(isset($_POST['login'])) {
$username =
$_POST['username'];
$password =
$_POST['password'];
if
(DB::query('SELECT username FROM users WHERE username=:username',
array(':username'=>$username))) {
if
(password_verify($password, DB::query('SELECT password FROM users
WHERE username=:username',
array(':username'=>$username))[0]['password'])) {
echo 'Logged in!';
//
при входе на сайт мы генерируем токен
$cstrong = true;
$token = bin2hex(openssl_random_pseudo_bytes(64, $cstrong)); // мы
генерируем 64 байта, вторым параметром
передается только переменая
//
echo $token; //
3df3d89336887cd8701b391ab5a8cd1b81205dcd1b9f51ed4d15815690cda971b19685bea37632c17d895bef95d2076c1d463697757a301828791ce1061ef43b
$user_id = DB::query('SELECT id FROM users WHERE username=:username',
array(':username'=>$username))[0]['id'];
DB::query('INSERT INTO login_tokens VALUE (:id, :token, :user_id)',
array(':id'=>null, ':token'=>sha1($token),
':user_id'=>$user_id));
setcookie("SNID", $token, time() + 60 * 60 * 24 * 7, '/',
NULL, NULL, TRUE);
} else {
echo 'Incorrect Password!';
}
} else {
echo 'User
not registered!';
}
}
?>
<h1>Login to your
account</h1>
<form
action="login.php" method="post">
<input type="text"
name="username" placeholder="Username..."/>
</p>
<input
type="password" name="password"
placeholder="Password..."/> </p>
<input
type="submit" name="login" value="Login"/>
</form>
Комментариев нет:
Отправить комментарий