首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何阻止用户直接访问页面,而不阻止PHP中的HTTP请求?

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

Stack Overflow用户
提问于 2015-12-06 23:05:37
回答 2查看 42关注 0票数 0

在我开始之前,我希望这个问题不会写得那么糟糕。由于问题格式的丑陋,我最后的问题受到了负面的关注。不管怎样,我的问题是:

我正在制作一个程序,在这个程序中,我必须将GET请求发送到我的域以获取信息和统计信息等。但是,我的问题是:我如何高效地访问GET(在 PHP中,PHP阻止典型的用户/person/cat/ etc访问我的页面,而只允许请求进入?)

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-07 00:35:20

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

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

( A)在执行get请求时使用特定的用户代理。这是监控服务识别请求的事实上的标准。

代码语言:javascript
复制
if ($_SERVER['HTTP_USER_AGENT'] != "your_user_agent") {
    die();
}

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

代码语言:javascript
复制
// 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
EN

Stack Overflow用户

发布于 2015-12-06 23:10:49

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

代码语言:javascript
复制
if (!isset($_GET)) {
   die();
} else {
  // Regular programming 
}

当然,这样的话,访问foo.php?doesthisvariablework=1的人就不会这么做了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34123977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档