我在我开发的应用中有一个管理页面,允许以网站管理员身份登录的用户点击链接以自动以特定用户身份登录(绕过密码输入)。
一旦应用程序将必要的会话变量设置为以所选用户身份登录,就会出现如下代码块:
if ($login->loginAsUser($_POST['selecteduser']) === TRUE) {
//redirect to user page
error_log ("REDIRECT TO user.php");
//die("breakpoint 1");
header("Location: user.php");
exit;
} else {
die("login error");
}
(没关系 - 我在此之前验证了POST变量)。
$ login-> loginAsUser(ID)是我的登录类的方法。它基本上只是破坏当前会话,然后为用户登录创建一个新会话,如果一切正常,则返回TRUE。
正如您所看到的,我在重定向之前添加了一些代码来向Apache错误日志写入消息。每次代码运行时,此消息都会在日志中正确显示。 但是大约90%的时间实际发生的是重定向到index.php,而不是重定向到user.php。此外,这种错误重定向似乎只出现在Internet Explorer(版本11和以前的版本)中,并且只发生在大约90%的时间。偶尔,它会重定向到正确的页面。
甚至更奇怪的是,如果我取消注释行die("breakpoint 1");
,浏览器STILL会重定向到index.php,而不是暂停并显示消息。
我尝试使用绝对路径进行重定向,但这并没有改善任何内容。