我和我的同事都很难解决这个问题.我们有一种特殊的网上商店,因为我们有客户和子客户.如果登录的人是子客户,我们希望在页面上显示一些额外的html.此方法有效,但是如果子客户注销并且普通客户登录,则仍然可以看到多余的html,但是我们不知道这是怎么可能的.反之亦然,问题是:如果第一个登录的是普通用户,然后注销,然后又有子客户登录,则多余的html将不可见.
1. loginck.PHP
//在用户键入他的电子邮件结束密码之后,我们检查它是普通用户还是子用户.
如果是普通用户,则=> $_SESSION [‘multiklant’] = 0;
否则,子用户==> $_SESSION [‘multiklant’] = 1;
否则$_SESSION [‘multiklant’] = 0; //找不到用户
2. index.PHP
if ($_SESSION['multiklant'] == 1) {
$userid = $_SESSION['userid'];
echo "<div class='col-md-3'>";
echo "<label for='Leveradres'>Leveradres*:</label><br/>";
echo "<select id='Leveradres' class='form-control'>";
echo "<option value='0'>Selecteer...</option>";
$qry = "SELECT * FROM LeverADRESSEN WHERE LA_EMAIL = '" . $_SESSION['klemail'] . "'";
$res = MysqLi_query($link, $qry);
while ($row = MysqLi_fetch_assoc($res)) {
echo "<option value='" . $row['LA_ID'] . "'>" . $row['LA_NAAM'] . "</option>";
}
echo "</select>";
echo "</div>";
}
3.1注销单击index.PHP
$("#logout").click(function () {
var lgout = $.get("logout.PHP");
lgout.done(function (data) {
$(".show-2").trigger("click");
$("#logout").addClass("hidden");
});
});
<?PHP
session_start();
$_SESSION = array();
session_unset();
session_destroy();
header("Location:index.PHP");
exit();
?>
如您所见,我们在这里使用了AJAX,但问题仍然存在.如果可能,我们希望保留AJAX,但如果不能保留,则可以将其删除.也是一种组合,其中重定向不是在PHP中而是在javascript部分中.
难道这是一个缓存问题?因为如果我们在不使用缓存的情况下重新加载浏览器,则可以正常运行.
我们正在搜寻互联网,包括这个网站已经6个小时了…
在MAC上的Chrome浏览器和Windows上的Internet Explorer 11中经过测试的代码没有任何区别.
解决方法:
您的注销将在标题位置执行退出操作.换句话说:$.get(‘logout.PHP’)完成了吗?
为什么要在服务器端进行重定向?因此将重新加载整个页面和脚本!而您正在等待“完成”.做这个:
会话被销毁后,页面准备就绪,.done回调将被执行.