我实际上有点尴尬地问这个问题,但是这个让我感到难过,而且我从来没有遇到类似的事情。
我有一个密码验证页面(index2.php),它接受用户输入的用户名/密码并进行验证。为了与此相关,它会检查两件事:
如果1有效,但有两个为真,则应将用户重定向到no-auth页面,并显示一条消息,指出他们有一个待定的密码更改请求,以及一个要重置的链接。重定向发生在Javascript中。我将变量($ valid)设置为true或false,如果它为false,则javascript会重定向到no-auth页面,并显示基于index2.php上设置的$ _GET变量的消息。
所以这一切在firefox和chrome中运行良好,但在Safari中,它总是点击重定向到noauth页面,其中包含'等待密码重置'信息。在对此进行故障排除时,我一直试图在index2.php上的整个auth进程中打印出各种数据,并在重定向之前终止该页面。这在chrome / ff(我得到打印输出)中工作得很好但是在safari中我没有打印出来。在这个调试中,我还发现,当我在safari中时,由于某种原因,它看不到来自index.php的某些$ _POST变量数据,这是我在Chrome /中看到的FF。
我完全理解理论上不应该发生这种情况(所有浏览器都应该看到php代码的输出完全相同),所以我不知道这里会发生什么。
以下是我认为的相关代码:
extract($_POST);
if($type != 'password') {
// *** DO SOMETHING **** //
}
else if($type == 'password') {
$checkPwd = new passwords();
// **** FIRST CHECK TO SEE IF THEY HAVE RESET THEIR PASSWORD - IF SO, WE NEED TO RESTRICT THEM FROM LOGGING IN **** //
$pwdResets = new passwordResets();
if($pwdResets->resetExists($email)) {
// *** DON'T LET THEM LOGIN, REDIRECT TO NOAUTH WITH MSG TO RESET PASSWORD. **** //
$valid = false;
$failReason = "pwdReset";
}
// *** SOME OTHER STUFF **** //
}
// **** LATER IN THE PAGE **** //
if($valid == false){
?>
<script type="text/javascript">
window.location.href="noauth.php?reason=<?php echo $failReason; ?>"
</script>
<?php
}
我必须遗漏一些重要的东西,但我在这里不知所措。据我所知浏览器,这不应该发生。此外,我被一般用户意识到这个问题,因此它不是我的环境特有的问题等。
非常感谢对此的任何想法!