0

我 mod_rewrite 我的页面与 SO 的做法非常相似。我有www.example.com/users/login/哪个将在内部使用users.login.php哪个充当控制器。我想在登录完成后将参数作为页面重定向到。

如果你传入一个相对 URL,你最终会得到一个看起来非常奇特的 URL,因为你传入的是questions/看起来像的东西,users/login/questions/而不是login.php?redir=questions.php

有没有人对如何在不严重污染 URL 的情况下很好地解决这个问题有任何意见或解决方案?我认为 SO 处理它的方式是将登录表单放在“提问”页面上。我想这是一个解决方案,但我正在寻找其他可能性。

编辑:似乎 using$_SERVER['HTTP_REFERER']是迄今为止最好的解决方案。有什么理由不使用它吗?我知道您可以伪造推荐人,但这实际上会造成任何损害吗?

4

3 回答 3

3

我在包含 url 的登录表单中使用隐藏字段,它对我有用。你也可以试试。

  1. 创建隐藏的输入字段。
  2. 将输入字段的值设置为$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
  3. 获取发布的网址并将用户重定向到该网址。

注意:HTTP_REFERER 并不总是设置。

于 2009-01-27T18:10:08.750 回答
1

存储前一页访问的最佳实践是使用$_SESSION全局。使用HTTP_REFERER除了统计数据之外的任何东西都是在要求用户滥用,因为您可以轻松伪造推荐人。

查看有关在 cookie 中存储多个会话 ID 的链接。 http://bytes.com/groups/php/7630-handling-multiple-sessions

于 2009-01-27T18:47:01.203 回答
0

为什么不使用类似的 URL /users/login/?r=/questions/?或者,如果您不想使用 URL 来获取返回地址,则可以使用 HTTP 引荐来源网址。

于 2009-01-27T18:29:01.100 回答