我目前正在为我的网站登录页面,并且我正在使用PHP。 当我第一次尝试登录时,它运行正常,密码验证正确,如果密码不匹配则显示错误,或者如果用户未首先注册(未找到电子邮件地址),那么我和#39;我认为代码逻辑很好。
当我退出并尝试再次登录时,代码无法正常工作,我只是重定向到登录页面,无论我输入的密码是对还是错,或者电子邮件地址是否存在。关闭标签并重新打开后,一切正常。
我认为这可能是一个会话问题,但我还是新手,所以我希望你能帮助我。
这是退出代码(已编辑):
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
session_cache_expire();
session_unset();
session_destroy();
header ('Location: home.php');
?>
</html>
登录:
<?php
if(!isset($_SESSION)) {
session_start();
}
var_dump($_SESSION);
if(isset($_SESSION["userID"])){
header("Location: home.php");
}
require('dbconnect.php');
?>
<!DOCTYPE html>
<html>
<head>
<title> Business Bridge </title>
</head>
<body>
<div id="content">
<h2> Logge Dich ein </h2>
<?php
if(isset($_GET['login'])){
$email = $_POST['email'];
$passwort = $_POST['passwort'];
$statement = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$statement ->bindParam(1,$email);
$result = $statement->execute();
$res = $statement->fetch();
$data = $res[1] ."\n" . $res[2] . "\n";
if($statement->rowCount() > 0 ) {
if (password_verify($passwort, $res[2]) && $email == $res[1]){
$_SESSION['email'] = $_POST['email'];
$_SESSION['vname'] = $_POST['vname'];
$_SESSION['userlevel'] = $res[6];
$_SESSION['userID'] = $res[0];
header('Location: home.php');
}
else{
echo "Falsches Passwort, probiere es noch einmal!";
}
}else{
echo "Die Email Addresse gibt es nicht!";
}
}
?>
<form action="?login=1" method="post">
E-Mail: <br> <input type="email" size="40" maxlength="250"
name="email"><br><br>
Dein Passwort:<br> <input type="password" size="40"
maxlength="250" name="passwort"><br><br>
<input id="button" type="submit" value="Send">
</form>
</div>
</div>
</body>
</html>
<?php
$pdo->connection = null;
?>
编辑:问题是由错误的重定向引起的。注销代码将重定向到不同的登录页面。
答案 0 :(得分:-1)
//Try this one in your logout.php page
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>