代码之家  ›  专栏  ›  技术社区  ›  WebDeg Brian

停止直接访问包含的文件PHP,JavaScript文件除外[关闭]

  •  -3
  • WebDeg Brian  · 技术社区  · 7 年前

    我知道有很多方法可以阻止直接访问(浏览)PHP文件,即:

    • 配置服务器以拒绝它们
    • 检查是否设置了变量或常量
    • 检查文件是否正在调用自身(使用 basename $_SERVER['PHP_SELF'] )

    然而,我正在进行实时搜索。每次用户按键时,它都会通过AJAX将关键字发送到PHP文件。使用以下方法可以阻止对包含文件的访问,但也可以阻止对JavaScript文件的访问。

    此外,我上面提到的PHP文件还包括另一个PHP文件,因此我认为传递一个变量并检查它是不可能的,因为您在同一个文件中定义一个变量并检查它。

    有人有什么想法吗?感谢您的帮助!

    1 回复  |  直到 4 年前
        1
  •  -1
  •   WebDeg Brian    7 年前

    我终于找到了答案。正如我上面所说,它仍然使用以下方法之一,但需要向搜索文件添加条件。
    常见包含文件:

    if (basename(__FILE__) == basename($_SERVER['PHP_SELF'])) {
        header("Location: http://example.com/404");
        exit();
    } //Check if the file is calling itself
    

    在搜索文件中:

    if (basename(__FILE__) == basename($_SERVER['PHP_SELF']) && !isset($_POST['query'])) {
        header("Location: http://example.com/404");
        exit();
    } //Check if the file is calling itself and there is no request found