【问题标题】:technique for remembering url记忆网址的技巧
【发布时间】:2009-09-24 12:23:54
【问题描述】:

我正在尝试实现一种功能,该功能能够将用户重定向到他在登录之前尝试访问的 URL/地址。

例如:

  1. 用户正在尝试访问仅限注册会员的区域。
  2. 他收到未登录的消息并被重定向到索引页面。

当用户成功登录后,如何将用户重定向到“Step 1”网址?

我希望我能够解释我想要做什么。

感谢(提前)提供任何帮助和建议 :-)

【问题讨论】:

  • rep 图表显示该问题从未投过反对票。你想得到同情的支持吗?
  • 我建议将标题更改为“在 http 请求中记住用户预期 URL 的技术”之类的内容,或者更详细地说明问题的内容。
  • 根本不是 e.c.ho 先生,但是当我第一次发布这个问题时,它立即被否决了。我现在已经删除了那条评论。

标签: php url redirect


【解决方案1】:

您可以在 URL 本身中传递该 URL:

if (!$loggedIn) {
    header('Location: http://example.com/login?return='.urlencode($_SERVER['REQUEST_URI']));
    exit;
}

以及登录成功后:

if ($loginSucessful) {
    if (isset($_GET['return']) && substr($_GET['return'], 0, 1) == '/')) {
        header('Location: http://example.com'.$_GET['return']);
    } else {
        header('Location: http://example.com/');
    }
    exit;
}

【讨论】:

  • 请注意,我对return 值进行了粗略的验证。
  • 我做了类似的事情,只是我将它存储到会话而不是 URL 中
【解决方案2】:

将请求 url 存储在登录表单的隐藏字段中,登录后重定向到该 url

【讨论】:

  • 您也可以尝试使用会话变量
【解决方案3】:

在重定向到登录页面之前将其存储在会话中(甚至可能是 cookie)

【讨论】:

    【解决方案4】:

    过去,我已经重定向回身份验证页面,其中“最终目标”页面具有重定向 URL:http://example.com/login?redirect=/secured/resource

    记得对参数值进行 URL 编码。此外,当您处理重定向 URL 的值时,请确保它是您网站上的 URL 或相对 URL,以避免任何安全攻击,如网络钓鱼方案。否则,第三方可以定位您网站的登录页面,然后重定向回他们的网站,并可能访问用户的安全会话。

    我不使用会话来存储 URL 的原因是,搜索引擎蜘蛛最终会在访问您网站上的安全且需要登录的链接时创建会话。由于他们必须提供凭据,因此创建会话只是为了在 30 分钟后超时。

    【讨论】:

      【解决方案5】:

      在会话中存储要好得多。它允许用户点击一个链接(例如注册链接)并在登录后仍然被重定向到原始页面。

      【讨论】:

        【解决方案6】:

        我看到论坛将它放入 URL,例如 www.myurl.com?prevUrl=。当然存储的 url 必须用 encodeURI 编码。

        【讨论】:

          【解决方案7】:

          您可以使用我真正喜欢的东西:HTTP 身份验证。这样,您就不会重定向到介于两者之间的特殊登录页面,并且深层链接可以正常工作。 Trac 做对了,恕我直言。

          另一种选择是将 URL 存储在您可能正在创建的会话中。如果您没有在登录时销毁会话,那么您可以在登录后使用它来重定向到深层链接。

          【讨论】:

          • http auth 不是很安全,但是
          • warren:缺少什么?如果您想要安全性(即,来自窃听者的隐私和知道对方确实是您所期望的人),那么您使用 SSL。你通过 HTTP 抛出的所有其他东西都是一样的。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-09
          • 2011-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多