Простая авторизация на PHP и MySQL (для новичков)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
function auth($username = null, $password = null) {
if (!empty($username) && !empty($password)) {
$username = mysql_real_escape_string($username); // Экранируем кавычки
$password = mysql_real_escape_string($password);
$query = mysql_query('SELECT * FROM users WHERE username = "'.$username.'" AND password = "'.$password.'" LIMIT 1'); // Ищем соответствия в таблице users
if (mysql_num_rows($query) > 0) { // если найдено
$user = mysql_fetch_assoc($query); // создаем ассоциативный массив со всеми данными пользователя
$remember_token = md5($user['id'].time().rand(0, 100)); // случайный ключ для авторизации
setcookie('uid', $user['id'], time() + $cookie_time, '/'); // устанавливаем cookie на время $cookie_time
setcookie('remember_toket', $remember_token, time() + $cookie_time, '/');
mysql_query('UPDATE users SET remember_token = "'.mysql_real_escape_string($remember_token).'" WHERE username = "'.$username.'" LIMIT 1'); // обновляем ключ в таблице
return true;
}
}
return false;
}
if (isset($_COOKIE['uid']) && isset($_COOKIE['remember_token'])) { // если есть cookies
$uid = (int) $_COOKIE['uid'];
$remember_token = mysql_real_escape_string($_COOKIE['remember_token']);
$query = mysql_query('SELECT * FROM users WHERE id = '.$uid.' AND remember_token = "'.$remember_token.'" LIMIT 1');
if (mysql_num_rows($query) > 0) {
$user = mysql_fetch_assoc($query);
} else {
setcookie('uid', null, 0, '/');
setcookie('remember_toket', null, 0, '/');
header('Location: /login');
}
}