如何阻止用户直接访问页面,而不是PHP中的HTTP请求?

时间:2015-12-06 23:05:38

标签: php http

在我开始之前,我希望这个问题不是那么糟糕。由于问题格式的简单丑陋,我的最后一个问题得到了负面的关注。无论哪种方式,这是我的问题:

我正在制作一个程序,我必须向我的域发送GET个请求以获取信息和统计信息等。 虽然,我的问题是:我如何有效(并且仅限PHP 阻止典型的用户/ person / cat / etc访问我的页面,并且只允许HTTP请求在?

示例:我从外部程序向我的域GET发送"foo.php"个请求。用户知道我从页面获取内容并尝试直接访问页面本身。

如何阻止用户直接在浏览器中查看该页面,但完全允许HTTP请求(例如GET请求)获取我的内容?

2 个答案:

答案 0 :(得分:1)

实际上,浏览器也在发送HTTP GET请求,因此您需要采用不同的方法来区分购买脚本/服务的GET和浏览器中的GET。

你有很多不同的方法,这里有两种可能的解决方案:

A)在您收到请求时使用特定的用户代理。这是监控服务以识别请求的事实上的标准。

if ($_SERVER['HTTP_USER_AGENT'] != "your_user_agent") {
    die();
}

B)使用特殊令牌授权您的请求

// if you like to send the token as parameter like foo.php?auth=bar
if ($GET['auth'] != "your_token") {
    die();
}

// or use this if you like to send it as a header named auth
if ($_SERVER['auth'] != "your_token") {
    die();
}

答案 1 :(得分:0)

最简单的方法是在foo.php中添加一个检查$ _GET参数的条件,然后在那时停止。

if (!isset($_GET)) {
   die();
} else {
  // Regular programming 
}

当然,有人来访foo.php?doesthisvariablework=1并通过。