我已经有几天这个问题了,无论如何尝试似乎都无法解决。
根据从我的登录脚本开始的会话中的数据,有一个登录表单可以将您重定向到/dashboard
或/admin
。
这是我的结构:
index.php (contains header with connection.php and the html login form)
dashboard.php (contains header with connection.php and some irrelevant html)
admin.php (same as above)
header.php (at the top of all pages, has connection.php included at the first line).
connection.php (my connection script, with at the top line session_start();
login.php (my loginscript, this script is called with ajax so I have to add my entire connection class in here with session_start(); again at the top.
logout.php (my logout script, it kills the session and redirects to login page this is linked to in my header.php)
在我的登录脚本中,有以下部分:
if($userpassword == $getuser['password']){
if($getuser['rights'] == '1'){
$_SESSION['userdata']['user'] = 'Administrator';
$_SESSION['userdata']['rights'] = '1';
$_SESSION['userdata']['logo'] = 'assets/images/logo.png';
$loginresult = array(
'login_result' => 'success',
);
$logindata = array(
'userdata' => 'admin',
);
echo json_encode($logindata);
}else{
$_SESSION['userdata']['user'] = $getuser['name'];
$_SESSION['userdata']['rights'] = '0';
$_SESSION['userdata']['logo'] = $sessionlogo;
$loginresult = array(
'login_result' => 'success',
);
$logindata = array(
'userdata' => 'user',
);
echo json_encode($logindata);
}
}else{
$logindata = array(
'userdata' => '',
'message' => 'Wachtwoord en gebruikersnaam komen niet overeen',
);
echo json_encode($logindata);
}
简而言之:当用户以管理员身份登录时,他们会看到名称Administrator
,而当我从数据库中使用另一个帐户登录时,他们会看到该特定名称。
我的logout.php:
<?php
session_start();
unset($_SESSION['userdata']);
header("Location: http://website.nl/login");
die();
?>
我还尝试了session_destroy();
而不是unset
例如,现在当我以管理员身份登录时,它可以正常工作,但是如果我随后注销并以用户身份登录,我将被重定向到正确的页面,但是即使我仍然可以看到名称Administrator
不是吗这也可以采用其他方法。
因此设置了会话并填充了数据,但是在注销和重新登录时,该会话不会被替换/删除,只是保持存在。
那是为什么?我唯一能想到的就是用ajax调用的login.php。这是唯一的地方,另一个session_start();存在,但是如果我删除它,我的loginscript将不再起作用。