嘿伙计们正在写一个小的验证脚本,它使用一个简单的令牌从输入登录。当令牌是正确的时,用户必须成功登录,两分钟后令牌必须到期并给用户一个消息令牌已过期。但是在这里,当我使用令牌时,它还带有消息令牌被破坏..我想使用令牌2分钟,我希望令牌在2分钟内过期。
我有html文件
<form action="gethints.php" method="post">
First name: <input type="text" name="fname"><br>
<input type="submit" value="Submit">
</form>
Php文件
<?php
$name = $_POST['fname'];
$currenttime = time();
$token = 'sample';
$timetounset = strtotime("2 minutes");
if($name != $token) {
echo 'you cant login';
} else {
echo 'you have succesfully logged in <br>';
}
if($currenttime > time() - $timetounset) {
unset($token);
echo "you cant use this token anymore";
} else {
echo 'token is not destroyed';
}
当我运行此代码并在输入框中键入sample时,我会收到类似
的消息 you have succesfully logged in
you cant use this token anymore
我需要的是当我输入id作为样本我希望得到消息you have succesfully logged in
时两分钟后我使用相同的id我需要得到像you cant use this token anymore
感谢您的帮助..
答案 0 :(得分:0)
接近此imo的最简单方法是设置一个2分钟到期的cookie。
在cookie中存储变量或标志,并在每次要进行验证时检查内容。
setcookie("TestCookie", $value, time()+120);
读出值:
if (isset($_COOKIE['TestCookie'])) {
// Good cookie
} else {
// expired or invalid
}
有关如何设置cookie和过期的信息:
答案 1 :(得分:0)
可以在这里使用会话:
首先,存储用户上次发出请求的时间
<?php
$_SESSION['timeout'] = time();
?>
在后续请求中,检查他们提前多久提出请求
<?php
if ($_SESSION['timeout'] + 2 * 60 < time()) {
// session timed out
} else {
// session ok
}
?>
编辑: 不要忘记拥有session_start();在您的代码和&amp;&amp;检查$ _SESSION ['timeout']是否存在,上面的代码只是一个例子。
答案 2 :(得分:0)
人们可以玩饼干。我建议你用token和expires列创建一个数据库表标记。插入令牌时,将此添加到您的sql中。 ......插入....... Timestampadd(now(),interval minute 2);要验证只检查now()是否小于到期。