PHP - 无法使用 $_SESSION 全局注销用户



我已经坚持了一天多了,我希望这里有人可以帮助我。我知道我不是第一个提出有关使用 PHP 会话登录/注销的问题的人,但我发现的其他答案似乎对我不起作用。

目前,我正在为我和我的同事正在制作的网站做服务器端脚本。该网站应该有一个管理仪表板,管理员可以在其中看到一些不错的数据,这是禁止网站其他访问者访问的。因此,我正在尝试使用会话构建登录/注销系统,这是我开始 Web 开发以来第一次这样做。

问题是,虽然登录似乎工作正常,但注销根本不起作用。无论我尝试什么,$_SESSION['user'] 永远不会被销毁,并且始终等于管理员用户名。这里有人知道我做错了什么吗?

我将发布我的登录.php,注销.php以及我用来调用这些的jQuery ajax函数。如果回答问题很重要:该网站目前将所有路由引导到 index.php,其中根据路由显示不同的视图。

帮助将不胜感激!

登录.php

session_start();
if ($_POST) {
$nameInput = $_POST['usernameLogin'];
$passwordInput = $_POST['passwordLogin'];
$DBrow = dbCompare("adminDash", "user", $nameInput);
if ($DBrow != NULL) {
$hashPass = $DBrow['pass'];
$passCheck = password_verify($passwordInput, $hashPass);
if ($passCheck == TRUE) {
$_SESSION['user'] = $DBrow['user'];
header("Location: ./dashboard");
}  
}
else {
return 0;
}
}

注销.php

session_start();
if ($_POST) {
unset($_SESSION['user']);
session_destroy();
if(session_destroy()) {
header("Location: ./");
}
}

jQuery Ajax 调用

function logIn() {
$.ajax({
method: 'POST',
data: {
usernameLogin: document.getElementById("usernameLogin").value,
passwordLogin: document.getElementById("passwordLogin").value
},
url: '/app/dataAccess/login.php',
success: function(response){
if (response == 0)    {
alert("Uw gebruikersnaam en/of wachtoord komen niet overeen. Probeer het nog een keer of herstel uw wachtwoord met onderstaande knop.")
}
},
error: function(){
alert("Er ging iets mis met het verzenden van uw data. Neem contact op met uw systeembeheerder.")
}
})
}
function logOut() {
$.ajax({
method: 'POST',
url: '/app/dataAccess/logout.php',
success: function (response) {
alert("succes")
},
error: function(){
alert("error")
}
})
}

用于登录/注销的引导模式

<div class="modal backgroundPijl form-horizontal text-center" id="myModal">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h5 class="col-12 modal-title text-center">Admin login</h5>
</div>
<!-- Modal body -->
<?php if ($_SESSION['user']) : ?> 
<div class="modal-footer">
<a type="button" id="loginButton" class="btn btn-danger mr-auto" onclick="logOut()" href="/home">Logout</a>
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
</div>
<?php else : ?>
<div class="modal-body">
<div class="form-group">
<label for="usernameLogin">Gebruikersnaam</label>
<input id="usernameLogin" name="usernameLogin" class="form-control">  
</div>
<div class="form-group">
<label for="passwordLogin">Wachtwoord</label>
<input id="passwordLogin" type="password" name="passwordLogin" class="form-control">  
</div>
</div>
<!-- Modal footer -->
<div class="modal-footer">
<button type="button" id="loginButton" class="btn btn-danger mr-auto" onclick="validateLogin()" href="/dashboard">Login</button>
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger mr-auto ml-auto">Wachtwoord vergeten?</button>
</div>
<?php endif; ?>
</div>
</div>

尝试使用其他解决方案

在下面的代码中写下logout.php及其工作。

session_start();
unset($_SESSION['user']); 
exit();

最新更新