Safari和Chrome / Firefox

时间:2015-11-17 20:09:32

标签: javascript php google-chrome safari

我实际上有点尴尬地问这个问题,但是这个让我感到难过,而且我从来没有遇到类似的事情。

我有一个密码验证页面(index2.php),它接受用户输入的用户名/密码并进行验证。为了与此相关,它会检查两件事:

  1. 用户名/ pword匹配有效
  2. 用户没有待处理的密码更新请求
  3. 如果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 
    }
    

    我必须遗漏一些重要的东西,但我在这里不知所措。据我所知浏览器,这不应该发生。此外,我被一般用户意识到这个问题,因此它不是我的环境特有的问题等。

    非常感谢对此的任何想法!

0 个答案:

没有答案