在页面之间重定向时,在URL末尾出现奇怪的#

时间:2015-01-01 11:16:48

标签: php html css3 redirect

我遇到的问题是#f1正在我的所有页面之间传递,#f1指向我的登录表单,例如127.0.0.1/#f1使用div标签显示登录表单。将帖子发送到自身进行验证,然后使用会话变量重定向到127.0.0.1/_af/act_login.php,以使用die(header(location:)); exit()登录用户。但该URL也将在末尾有#f1,例如127.0.0.1/_af/act_login.php#f1。然后,当我从该页面重定向回到127.0.0.1时,它再次将其重新载入,例如127.0.0.1/#f1再次显示登录表单,而不仅仅是我的主页。不确定我做错了什么?或者在哪里寻找好的答案,任何帮助表示赞赏。谢谢。

以下是代码片段:

要显示登录表单:<a href="#f1"><li>Login</li></a>

登录表单:

<div id="f1">
    <div id="loginForm">
        <h3>Login</h3>
        <form name="loginForm" action="" method="post">
            <input type="hidden" name="form" value="Login" />
            <div>Email:</div>
            <div><input type="text" name="email" value="" /></div>
            <div id="newLine"></div>
            <div>Password:</div>
            <div><input type="password" name="password" /></div>
            <div id="newLine"></div>
            <div class="submitButton"><input type="submit" value="SUBMIT" /></div>
        </form>
    </div> </div>

PHP验证完成后重定向:

die(header("Location: _af/act_login.php"));
    exit();
}

PHP在日志条目完成后重定向并完成登录:

die(header('Location: http://127.0.0.1'));
    exit();

2 个答案:

答案 0 :(得分:0)

这是片段标识符,因为表单发布到自身。从来没有见过这样的标题,是不是在标题之前杀死了脚本?尝试将它们改为

header("Location: _af/act_login.php");
die();

答案 1 :(得分:0)

片段标识符(#f1)被复制到新位置,因为您使用的是 relative URI-Reference。您需要使用绝对 URI-Reference

header ('Location: http://127.0.0.1/_af/act_login.php');

RFC 7231中详细介绍了此行为:

7.1.2.  Location

     Location = URI-reference

   The field value consists of a single URI-reference.  When it has the
   form of a relative reference ([RFC3986], Section 4.2), the final
   value is computed by resolving it against the effective request URI
   ([RFC3986], Section 5).

   ...

   If the Location value provided in a 3xx (Redirection) response does
   not have a fragment component, a user agent MUST process the
   redirection as if the value inherits the fragment component of the
   URI reference used to generate the request target (i.e., the
   redirection inherits the original reference's fragment, if any).

参考