Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查用户是否试图在没有数据发送到服务器的情况下手动访问脚本?_Php - Fatal编程技术网

Php 如何检查用户是否试图在没有数据发送到服务器的情况下手动访问脚本?

Php 如何检查用户是否试图在没有数据发送到服务器的情况下手动访问脚本?,php,Php,假设我有一个名为test.php的脚本,我想知道如何检查用户是否试图手动访问example.com/test.php,如果是,则抛出一个禁止的错误var_dump(http_response_code(403))这是我的代码: if($conditions) var_dump(http_response_code(403)); 以下是我想要的$conditions: 用户未登录 用户对手动访问该脚本没有“兴趣”。这就是,我想检查是否有$\u POST或$\u GET,如果没有,则抛

假设我有一个名为test.php的脚本,我想知道如何检查用户是否试图手动访问example.com/test.php,如果是,则抛出一个禁止的错误
var_dump(http_response_code(403))这是我的代码:

if($conditions)
     var_dump(http_response_code(403));
以下是我想要的$conditions:

  • 用户未登录
  • 用户对手动访问该脚本没有“兴趣”。这就是,我想检查是否有$\u POST或$\u GET,如果没有,则抛出禁止的错误
$conditions=$NOT| | |(!isset($_POST)和&!isset($_GET))


问题是,一个简单访问example.com/test.php的用户是一个$\u GET。。。所以这个代码会失败。我想要的是一个foulproof方法,以确保用户真正尝试手动操作(是的,我完全知道用户可以手动执行此操作,例如
example.com/test.php?但这不是我的观点。
。有人能帮我吗?tyvm!

非常简单:检查请求有效必须满足的所有条件,如果不符合,则每个条件都会失败

if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
    header('HTTP/1.0 405 Method Not Allowed');
    exit();
}

if (/* user is not logged in */) {   // fill in your user authentication here
    header('HTTP/1.0 403 Forbidden');
    exit();
}

if (!isset($_GET['foo'])) {
    header('HTTP/1.0 400 Bad Request');
    exit();
}

echo 'Hi! ', $_GET['foo'];

脚本应该如何访问?听起来像是表单提交之类的行为-你能澄清一下吗?你如何区分“意图”?你不能。访问此文件必须满足哪些标准?你已经告诉了我们很多你试图阻止的事情(黑名单);试着告诉我们你想要什么(白名单)。@Darragh通过表单、$\u POST或$\u GET,但这些信息是不相关的……我想说的是,我希望禁止用户访问没有$\u POST或$\u GET数据的脚本,就像that@deceze如上所述