【问题标题】:Making page that user is viewing stay on page rather than redirecting to home page使用户正在查看的页面停留在页面上而不是重定向到主页
【发布时间】:2013-10-13 06:15:35
【问题描述】:

使用 php,我怎样才能做到这一点?例如:

1.) 假设共有 5 个页面(A、B、C、D、E)任何用户都可以查看(登录或退出)

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

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

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

这是我让用户登录并被重定向的内容,但不知道如何让它能够让用户在登录时停留在用户正在查看的任何页面上。

PHP

header("Location: index.php");

为了让用户在登录时停留在他们正在查看的同一页面上,是否还需要做更多的事情?或者是否有一个简单的解决方案,我似乎无法仅使用上面的那一行代码找到?

我已经阅读了大量的教程/博客/论坛等...但在任何地方都找不到明确的答案。我确实遇到过“PHP_SELF”,但根本不知道如何实现它,而且 php.net 并没有明确的解决方案来解决如何使用它——(或者至少从我读到的)......任何帮助都会不胜感激。

已解决: --> 感谢 Thinkswan 的帮助

$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 容器就会崩溃,但在同一页面上登录。

【问题讨论】:

    标签: php html


    【解决方案1】:

    您可以使用$_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>
    

    【讨论】:

    • 很棒 - 跨浏览器兼容吗?我是否一定需要在开头的http://
    • 上面回答了我自己的问题,谢谢thinkswan的帮助!
    • 为了进一步扩展这一点,我想保留您提供的答案thinkswan,但是,有没有办法,例如,用户正在查看页面- 未登录,并且点击了打开的东西 - 然后决定登录,而不是用户在他/她登录之前单击时正在查看的容器折叠,有没有办法在他/她时保持打开状态登录?例如,如果该用户在登录之前单击了一个容器,则 url 如下所示:http://www.example.com/profiles.php#registered_members,有没有办法让该容器保持不变
    • @user2732875 我不完全明白你在问什么。你能提供一个pointform工作流程吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-05
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2014-12-14
      • 1970-01-01
      • 2019-12-25
      相关资源
      最近更新 更多