php session_start Функция авторизации param string username Логин para

 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
session_start();
/**
* Функция авторизации
* @param string $username Логин
* @param string $password Пароль
* @return mixed true в случае успешной авторизации, array при возникновении ошибок
*/
function login($username, $password)
{
// login => password
$users = array(
'test' => 'qwerty',
'test2' => '12345',
);
$errors = array();
// Если вход не требуется
if (user() !== false) {
return array('Вы уже вошли в систему.');
}
if (!isset($users[$username])) {
return array('Неверно введено имя пользователя');
}
if ($users[$username] != $password) {
return array('Неверно введен пароль');
}
$_SESSION['user'] = array(
'username' => $username,
// Тут можно еще что то заисать о пользователе, например имя
);
return true;
}
function user()
{
return (!empty($_SESSION['user']) && is_array($_SESSION['user'])) ? (object) $_SESSION['user'] : false;
}
/**
* Выход из системы.
*/
function logout()
{
session_destroy();
header("Refresh:0; url=/login.php");
}
if (!empty($_POST['user']) && is_array($_POST['user'])) {
$username = !empty($_POST['user']['username']) ? trim($_POST['user']['username']) : false;
$password = isset($_POST['user']['password']) ? $_POST['user']['password'] : false;
$errors = login($username, $password);
}
if (isset($_GET['logout'])) {
logout();
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Страница админа</title>
</head>
<body>
<?php if (user() !== false): ?>
Вы авторизованы как <?php echo user()->username ?>.<br />
<!-- Вообще я бы использовал redirect -->
Войти в <a href="/admin.php">Админку</a><br />
<a href="/login.php?logout">Выйти из системы</a>
<?php else: ?>
<?php if (!empty($errors) && is_array($errors)): ?>
<ul>
<?php foreach ($errors as $error): ?>
<li><?= $error ?></li>
<?php endforeach ?>
</ul>
<?php endif; ?>
<form action="/login.php" method="post">
<fieldset>
<legend>Введите логин и пароль</legend>
<div>
<input type="text" placeholder="username" name="user[username]" /> <br />
<input type="password" placeholder="password" name="user[password]" /> <br />
<input type="submit" value="Вход" />
</div>
</fieldset>
</form>
<?php endif; ?>
</body>
</html>