В настоящее время у меня есть функции для создания токена, но как я могу заставить его истечь? Также, что будет хорошим сроком хранения для токена?
Код генерации токена:
function token($length = 40) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $token = 12000; $token = srand(floor(time() / $token)); for ($i = 0; $i < $length; $i++) { $token .= $characters[rand(0, $charactersLength - 1)]; } return $token; }
Лучшей практикой является наличие таблицы базы данных, в которой хранится информация о маркерах, созданных …
id | expiry_timestamp | token ...
Затем отредактируйте код для хранения каждого токена, созданного с помощью expiry_timestamp …
function token($length = 40, $expiry) { // Set expiry_timestamp.. $expiry_timestamp = time() + $expiry; // Generate the token... $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $token = 12000; $token = srand(floor(time() / $token)); for ($i = 0; $i < $length; $i++) { $token .= $characters[rand(0, $charactersLength - 1)]; } /** Do a quick manipulation in the token table... * ...Connect to database table then execute following SQL statement.. * mysqli_query($link, "INSERT INTO token_table (token, expiry_timestamp) VALUES($token, $expiry_timestamp)"); */ return array($token,$expiry); }
Просто убедитесь, что вы хотите проверить, истекло ли это, вы можете использовать другую функцию для извлечения ее expiry_timestamp и подтверждения, будет ли она больше текущей метки времени