Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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_Apache_.htaccess - Fatal编程技术网

如何在php中阻止用户访问文件夹?

如何在php中阻止用户访问文件夹?,php,apache,.htaccess,Php,Apache,.htaccess,我已经到处搜索过了,但是找不到。我想知道的是我有一个名为temp like的文件夹 ->公共网页 -->临时工 现在,我如何限制用户从外部服务器访问它,就像有人在php脚本中包含它时出错一样?我想通过php而不是通过.htaccess或apache来实现,我尝试了chmod,但它仅从本地服务器限制了整个网站。我也做了常量的事情,但是如果有人知道常量名称,那么他仍然可以提取数据。您不能包含远程PHP文件。如果allow\u furl\u open和allow\u url\u include设置为t

我已经到处搜索过了,但是找不到。我想知道的是我有一个名为temp like的文件夹

->公共网页

-->临时工


现在,我如何限制用户从外部服务器访问它,就像有人在php脚本中包含它时出错一样?我想通过php而不是通过.htaccess或apache来实现,我尝试了chmod,但它仅从本地服务器限制了整个网站。我也做了常量的事情,但是如果有人知道常量名称,那么他仍然可以提取数据。

您不能包含远程PHP文件。如果
allow\u furl\u open
allow\u url\u include
设置为true并使用
include('http://yoursite/temp/yourfile.php”)
,则包含的是该PHP文件的输出。不是PHP源代码本身

因此,当您有一个包含以下内容的php文件时:

<?php
    $password = "secret";
    echo "Test";
?>

如果有人远程包含该文件,他们只会返回“Test”,这不是有效的PHP语法。他们将无法看到文件的内容,只能看到输出的内容。该文件在远程(或在本例中为您的)服务器上运行。任何包含它的人都会在该服务器上执行后获得输出


所以,如果(!isset(一些神奇的常数))死了(“走开!”),你就不必像
那样去做任何事情了,这很愚蠢,但不幸的是,我在网上看到了这一切。

htaccess,我知道的唯一方法。。。不要认为使用PHP是可能的

<Directory /public_html/temp>
  order allow,deny
  deny from all
</Directory>

命令允许,拒绝
全盘否定
将一个空的“index.html”文件放在“temp”文件夹中。这会阻止用户查看该文件夹的内容。这基本上使得用户无法绕过它


至于在脚本中包含它,人们必须知道其中包含哪些文件才能在脚本中使用它。

我不清楚您想要实现什么。如果您想授予本地访问权限,但限制远程访问,您应该能够使用chmod和chown来实现这一点。如何“在PHP脚本中导入文件夹”?通常,你会用.htaccess保护一个文件夹——PHP不能保护一个文件夹,除非它只是一个通过PHP生成的虚拟文件夹。你说的“我已经做了固定的事情”是什么意思?我也不明白您在尝试什么,但如果您希望能够包含目录中的php文件,但不希望通过url提供这些文件,则有许多解决方案。。最简单的方法之一(但也不是基于php的)是在web根目录之外获取该目录ok抱歉,我的不好好好,让我解释一下,我们通过添加一个简单的include('script.php')来包含一个php脚本。现在,如果用户添加include('url.com/temp/script.php'),就可以访问任何文件,而我一直在做的就是添加define('Script',TRUE);在我们将包含脚本的地方,我们将包含的脚本将具有以下内容:(!defined('Script'){echo“Go back”}现在我想要的是,本地服务器可以访问所有文件,如果任何人出了问题,我们怎么能这样做呢?但我只想通过php访问。你的意思是,就像有一个mysql查询一样:$q=mysql\u query(“SELECT*FROM user”),$con)或die(mysql\u error();$user=mysql\u fetch\u assoc($q);现在没有人可以从$user数组中获取数据了,对吗?是的,您的PHP代码和数据通常不能从外部包含或访问。但是,退出本应仅在受控环境中执行的PHP文件(可能包含在index.PHP或类似文件中)并不愚蠢。根据代码的编写方式,如果在没有受控环境的情况下执行,它可能会做坏事。你是对的,但如果你需要依赖这样的检查,我认为是时候进行完全重写了。而不是由其他人而不是原程序员进行重写。