Механизм аутентификации создает токен при отображении формы и сохраняет его на стороне сервера.
Также механизм авторизации добавляет токен в качестве скрытого ввода в форму. Когда вы отправляете его, система проверки подлинности проверяет, хранится ли она на сервере
Если токен найден, процесс аутентификации продолжится и токен будет удален.
Защищает от спама форму действий скрипта.
Пример использования с URL выхода из системы:
<?php
// Generate token
$logout_token = md5(microtime().random(100, 999));
session_start();
// Store token in session
if (!is_array($_SESSION['logout_tokens']) {
$_SESSION['logout_tokens'] = array();
}
$_SESSION['logout_tokens'][] = $logout_token;
?>
<a href="/logout/?logout_token=<?= $logout_token ?>">logout</a>
Скрипт, который обрабатывает выход из системы:
<?php
$done = false;
if (!empty($_GET['logout_token'])) {
// Get token from url
$logout_token = $_GET['logout_token'];
session_start();
if (!is_array($_SESSION['logout_tokens']) {
$_SESSION['logout_tokens'] = array();
}
// Search get token in session (server-side storage)
if (($key = array_search($logout_token, $_SESSION['logout_tokens'], true)) !== false) {
// Remove used token from storage
unset($_SESSION['logout_tokens'][$key]);
// Do logout
$done = true;
}
}
if ($done === false) {
echo "Something went wrong.";
}