嘿伙计们试图确定两分钟是否已经结束了。我有一个输入框和一个PHP脚本,检查5秒是否结束。我需要的是当用户插入正确的值我只想显示password is correct
和you are now logged in with the existing token
。
5秒钟后,我想显示you cant login with this token id anymore
等消息。
但问题是每次在5秒后发出消息you are now logged in with the existing token
。它没有显示消息you cant 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
......
我在哪里做错了?..任何帮助都是apreciated..Thanx
答案 0 :(得分:1)
PHP脚本由服务器执行。一旦在浏览器中看到某些内容,服务器上就不再有任何操作(至少在此脚本中)。
要完成您在此处尝试的操作,您需要使用AJAX
(异步javascript和xml)。
在这种情况下,有些事情是可以理解的:
使用javascript x
- 秒后的硬编码请求(我建议使用jQuery):
setTimeout(function(){$('#message').load('myScript.php');}, 5000);
您可以使用SSE
(Sever-Sent Events),打开与服务器的持久连接,并在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';
}
更新2:也许这会对您有所帮助 - 它会执行您在问题中描述的内容:
<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>