Подскажите пожалуйста что здесь не так ?
<?
include_once("bd.php");
$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("время жизни токена истекло.");
}
// активируем пользовательский аккаунт
// ...
?>