我已经用sqlite编写了这个登录php:
<?php
$db = new PDO('sqlite:data.db');
session_start();
if (isset($_SESSION['timeout'])) {
if ($_SESSION['timeout'] + 4 < time()) {
session_destroy();
}
} else {
$_SESSION['pass'] = "";
$_SESSION['timeout'] = time();
}
if (isset($_POST['pass'])) {
$_SESSION['pass'] = $_POST['pass'];
}
if (!empty($_SESSION['pass'])) {
$result = $db->query("SELECT password,user FROM users");
foreach ($result as $row) {
if (password_verify($_SESSION['pass'], $row['password'])) {
echo "Welcome! You're logged in " . $row['user'] . "! <a href='index.php?logout=true'>logout</a>";
if (isset($_GET['logout'])) {
unset($_SESSION['pass']);
header('location: index.php');
}
}
}
}
else {
echo '<form method="POST" action=""><input type="password" name="pass"><form>';
}
?>
这是我的sqlite(data.db):
我的问题如下:如果我与数据库中的一个用户登录,会话将持续到最后4秒,您可以阅读消息:Hello用户,您已登录(注销)
但是:如果我引入了一个错误的密码(不在数据库中),屏幕会变白,我也要等4秒钟。
我的问题是:如何将错误登录重定向到登录表单而无需等待会话结束?
答案 0 :(得分:2)
对我来说逻辑似乎有点偏离我会采用这种方法:
F = float(raw_input("Enter Temperature In Fahrenheit:"))
if F <= (-459.67):
print "Temperature in absolute zero cannot be achieved"
else:
C = F - 32 * (0.555556)
print "The temperature is %.1f" 'C' % C
# ----------------------------------------------------------
C = float(raw_input("Enter Temperature In Celsius:"))
if C <= (-273.15):
print "Temperature in absolute zero cannot be achieved"
else:
F = C * (1.8) + 32
print "The temperature is %.1f" 'F' % F
此外,您还应该传递用于测试密码的用户名。当您有更多用户时,此方法将需要长时间加载。当2个用户拥有相同的密码时,它也不会准确地工作。