【问题标题】:redirect users using $_GET使用 $_GET 重定向用户
【发布时间】:2012-12-15 17:16:44
【问题描述】:

我有一个 php 页面 "view.php"

但我不希望任何人通过点击或手动输入 www.domain.com/view.php 来直接查看页面,它必须来自 index.php 正在经历一些过程。即

index.php ==> view.php/id=$$$

我试过 $_SERVER['REQUEST_URI'];

if ($_SERVER['REQUEST_URI'] =='www.domain.com/view.php')
header("location: index.php");

但没用..

谁能帮忙

【问题讨论】:

  • 你为什么不使用.htaccess?服务器请求 uri 不可靠。
  • @thatidiotguy 会话变量从 index.php 打印在 view.php 上,如果我使用 htaccess 还可以吗.. 请建议
  • 正如@thatidiotguy 所说,服务器请求uri 不可靠。请参阅stackoverflow.com/questions/165975/determining-referer-in-php 如果您控制用户所在的上一个页面,您可以在会话中设置 cookie 或其他内容,然后检查是否存在/是您 view.php 上的正确值
  • 把它放在文档根目录之外,让 index.php 包含它。

标签: php redirect get


【解决方案1】:

尝试使用 POST 变量通过 index.php 文件中的表单发送它

<form action="view.php" method="post">
<input type="hidden" vaue="test" name="KEY"/>
</form>

在你的 view.php 中

if(isset($_POST['key'])){
//LOAD FILE
}

虽然有不同的解决方案

【讨论】:

    【解决方案2】:

    $_SERVER["REQUEST_URI"] 返回站点根目录相对路径,即“/view.php”或“/folder/file.php”。所以你的代码应该是if ($_SERVER["REQUEST_URI"] == "/view.php") { /* ... */ }。还建议在重定向头之后放置exit();,以防止后续代码执行。

    您也可以像这样使用 $_SERVER["HTTP_REFERER"] if(!$_SERVER["HTTP_REFERER"] == "http://www.your-domain.com/index.php") { /* ... */ }

    更多信息,请参考http://php.net/manual/en/reserved.variables.server.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 2020-12-16
      • 2013-06-25
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 2017-05-13
      相关资源
      最近更新 更多