我遇到的问题是#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();
答案 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).