Авторизация на сессиях (для новичков)

 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
32
33
34
35
36
37
38
39
<?php
session_start();
function login($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)); // случайный ключ для авторизации
$_SESSION['uid'] = $user['id'];
$_SESSION['remember_token'] = $remember_token;
mysql_query('UPDATE users SET remember_token = "'.mysql_real_escape_string($remember_token).'" WHERE username = "'.$username.'" LIMIT 1'); // обновляем ключ в таблице
return true;
}
}
return false;
}
function logout() {
unset($_SESSION['uid']);
unset($_SESSION['remember_token']);
}
// если есть cookies
if (isset($_SESSION['uid']) && isset($_SESSION['remember_token'])) {
$uid = (int) $_SESSION['uid'];
$remember_token = mysql_real_escape_string($_SESSION['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 {
unset($_SESSION['uid']);
unset($_SESSION['remember_token']);
header('Location: /login');
}
}