如何将重定向URL传递到mod_rewritten页面

时间:2009-01-27 18:03:23

标签: php mod-rewrite url-rewriting

我mod_rewrite我的页面非常类似于SO的做法。我有www.example.com/users/login/,它将在内部使用充当控制器的users.login.php。我希望在登录完成后将参数作为页面传递给重定向。

如果您传入相对网址,最终会看到一个非常奇特的网址,因为您传递的内容类似于questions/,而不是users/login/questions/

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

编辑:到目前为止,似乎使用login.php?redir=questions.php是最佳解决方案。有没有理由不使用它?我知道你可以伪造引用者,但这会不会造成任何损害?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

存储查看的上一页的最佳做法是使用$_SESSION全局。使用HTTP_REFERER除了统计信息之外的任何内容都会要求用户滥用,因为您可以轻松伪造引用者。

查看此链接,了解如何在Cookie中存储多个会话ID。 http://bytes.com/groups/php/7630-handling-multiple-sessions

答案 2 :(得分:0)

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