gpt4 book ai didi

php - session 不会在 5 秒内超时

转载 作者:行者123 更新时间:2023-11-28 01:33:24 26 4
gpt4 key购买 nike

大家好,我想确定 php 中两分钟是否结束。我有一个输入框和一个 php 脚本,用于检查 5 秒是否结束。我需要的是当用户插入正确的值时只想显示密码正确您现在已使用现有 token 登录

5 秒后,我想显示类似您不能再使用此 token ID 登录 的消息。

但问题是每次我都会在 5 秒后收到消息 you are now logged in with the existing token。它没有显示消息 you can't login .....

我用过的代码..

<?php
session_start();
$_SESSION['logintime'] = time();
$name = $_POST['fname'];
$tokenvalue = 'sample';
if($name != $tokenvalue) {
echo 'the token is incorrect<br>';
} else {
echo "the token is correct<br>";
}


if (time() > $_SESSION['logintime'] + 5) {
echo 'you cant login with this token id anymore<br>';
} else {
echo 'you are now logged in with the existing token';
}

希望我可以在 5 秒后显示消息 you cant login with this token id anymore ??..

我哪里做错了??...任何帮助都将不胜感激..谢谢

最佳答案

PHP 脚本由服务器执行。一旦您在浏览器中看到某些内容,服务器上就不再有任何操作(至少在此脚本中)。

要完成您在这里尝试的工作,您需要使用 AJAX(异步 javascript 和 xml)。

在这种情况下有些事情是可以接受的:

  • x 秒后使用 javascript 的硬编码请求(我建议为此使用 jQuery):

    setTimeout(function(){$('#message').load('myScript.php');}, 5000);
  • 您可以使用 SSE(服务器发送事件),在其中打开与服务器的持久连接并在 x 秒后推送事件。 HTML5rocks 上有很好的教程和 MDN .

  • 您只能使用 javascript,因为消息只会出现在客户端 - 您无论如何都需要在保存用户输入之前验证时间。为此,您还可以使用 jQuery:

    setTimeout(function(){$('#message').html('you cant login with this token id anymore<br>');}, 5000);

更新:您的代码中有些奇怪的地方(我将尝试使用注释来解释我的意思):

<?php
session_start();
// you set the login, before you validate the users input
$_SESSION['logintime'] = time();
// thats okay, but actually not really necessary
$name = $_POST['fname'];
// thats okay for a test only :)
$tokenvalue = 'sample';
if($name != $tokenvalue) {
// you should use exit() or die() when the login fails to end the script
echo 'the token is incorrect<br>';
} else {
// first you use the word "token" now "password"
echo "the password is correct<br>";
}

if (time() > $_SESSION['logintime'] + 5) {
echo 'you cant login with this token id anymore<br>';
} else {
echo 'you are now logged in with the existing token';
}

Update2:也许这对您有帮助 - 它可以完成您在问题中描述的内容:

<html>
<head>
</head>
<body>
<?php
$tokenvalue = 'sample';
if(isset($_POST['token'])){
if($_POST['token'] === $tokenvalue) {
echo '<div id="success">The password is correct.<br>You are now logged in with the existing token.</div>';
}
}
?>
<form action="" method="post">
Token: <input type="text" name="token"><br>
<input type="submit" value="Submit">
</form>
<script>
if(typeof(document.getElementById('success')) != 'undefined') {
setTimeout(function(){document.getElementById('success').innerHTML = "You can't login with this token anymore."},5000);
}
</script>
</body>
</html>

关于php - session 不会在 5 秒内超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29575517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com