Здравствуйте читающие. Пытаюсь сделать ссылку на Denwer со сроком жизни. Нашел урок в интернете, но и оригинал и мои все правки выдают какую ни будь ошибку. Кто сможет подскажите пожалуйста, что здесь не так ?
В таком исполнении пишет ошибку - ,,Неустранимая ошибка: Uncaught исключение исключение с сообщением 'токен не валиден.- в ... Z:\home\site-15 \ www \ index.php: 34 трассировка стека: #0 {main},,
Код: Выделить всё
$query = $db->prepare{
"INSERT INTO pending_users (username, token, tstamp) VALUES (?, ?, ?)"
};
$query->execute{
array(
$username,
$token,
$_SERVER["REQUEST_TIME"]
)
};
$url = "http://example.com/activate.php?token=$token";
///////
$message = <<<ENDMSG
Thank you for signing up at our site. Please go to
$url to activate your account.
ENDMSG;
mail($address, "Activate your account", $message);
///////
// получаем токен
if (isset($_GET["token"]) && preg_match('/^[0-9A-F]{40}$/i', $_GET["token"])) {
$token = $_GET["token"];
}
else {
throw new Exception("токен не валиден.");
}
// проверяем токен
$query = $db->prepare("SELECT username, tstamp FROM pending_users WHERE token = ?");
$query->execute(array($token));
$row = $query->fetch(PDO::FETCH_ASSOC);
$query->closeCursor();
if ($row) {
extract($row);
}
else {
throw new Exception("токен не валиден.");
}
// активируем пользовательский аккаунт
// ...
// удаляем токен из базы
$query = $db->prepare{
"DELETE FROM pending_users WHERE username = ? AND token = ? AND tstamp = ?"};
$query->execute(
array(
$username,
$token,
$tstamp
)
);
// 1 день в секундах = 60 секунд * 60 минут * 24 часа
$delta = 86400;
// проверка
if ($_SERVER["REQUEST_TIME"] - $tstamp > $delta) {
throw new Exception("время жизни токена истекло.");
}
// активируем пользовательский аккаунт
// ...
Комментариев нет
Комментариев пока нет, но ты можешь быть первым! Нужно лишь войти или зарегистрироваться и поделиться своим мнением.
Похожие темы
-
Всегда интересовал этот вопрос,почему ссылка автоматически врезается так что по средине становятся точки.
Если нужно чтоб ссылка была видимой...