使用户正在查看的页面停留在页面上,而不是重定向到主页


Making page that user is viewing stay on page rather than redirecting to home page

使用 php,我该如何做到这一点? 前任:

1.(总共有5个页面(A,B,C,D,E(任何用户都可以查看(登录或注销(

2.( 用户 X 正在查看页面 (C( 且未登录

3.( 用户 X 登录到页面 (C( 并登录到他/她正在查看的同一页面 (C(,而不是被重定向到主页

当任何用户

登录任何页面时,我知道如何将用户重定向到主页,但我不希望这样,而且是我的用户不想要的 - 我希望任何用户都可以登录他们正在查看的任何页面,并且它为他们保留在该页面上而不是被重定向。

这就是我为用户提供的登录和重定向,但不知道如何让用户能够在登录时停留在用户正在查看的任何页面上。

.PHP

header("Location: index.php");

是否还需要更多内容才能允许用户在登录时保持他们正在查看的同一页面上? 或者有一个简单的解决方案,我似乎只使用上面的 1 行代码找不到?

我读过大量的教程/博客/论坛等......但在任何地方都找不到明确的答案。 我确实遇到了"PHP_SELF",但根本不知道如何实现它,php.net 并没有一个明确的解决方案来使用它 - (或者至少从我读到的内容来看(......任何帮助将不胜感激。

已解决: --> 谢谢你的帮助 思考天鹅

$current_url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
header("Location: $current_url");

更新: -->源于初始问题

的问题

从您上面提供的正确格式来看,我们是否可以更进一步? 例如:

与前面提到的规则相同。

1.( 如果用户 X 当前未登录第 (C( 页,并且假设页面 (C( 的 URL 读取http://www.example.com/members.php,并且他/她在该页面上单击了一个div 容器,则会打开另一个更大的div 容器。

2.( 其中 URL 现在读取http://www.example.com/members.php#registered_members

3.( 当它处于打开状态时,用户 X 决定现在登录。 有没有办法使用户 X 登录后它停留在同一页面上,并打开更大的div 容器? 截至目前,一旦用户 X 登录,div 容器就会折叠,但在同一页面上登录。

您可以使用

$_SERVER['REQUEST_URI']

例:

$current_url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
header("Location: $current_url");

对修订问题的回答:

URL 的#registered_members部分(称为片段标识符(永远不会发送到服务器 — 它仅是客户端的。所以PHP从来没有意识到它的存在。

但是,您可以在页面重新加载时使用 JavaScript 检查它,然后根据它是否存在来更新页面。

<script>alert(window.location.hash);</script>

如果您要从所有表单中包含或调用相同的登录页面,则可以执行一件事。只需在会话变量中获取当前页面 URL,然后将其重定向到该页面即可。