我有一个网页,其中包含许多php文件,我想知道如何阻止用户单独查看php包含?
答案 0 :(得分:6)
一种流行的方法是在包含文件中定义一个常量:
define ("INCLUDE_OK", true);
然后检查每个子包括:
if (!defined("INCLUDE_OK")) die ("This file can't be executed directly");
或者,正如@mikerobi在他现在删除的答案中所说,将包含文件存储在Web根目录之外的文件夹中。
答案 1 :(得分:2)
如果用户根本不应该调用PHP文件,则它们甚至不应该在文档根目录中。例如,如果您的文档根目录是 / var / www / html ,我会创建一个 / var / www / include 目录并将其放在那里。用户实际上无法调用它们,用户应该可以将它们引用为 ../include/myinclude.php 。
答案 2 :(得分:1)
在您的主文件中,执行以下操作:
<?php
define('AAA',true);
?>
在所有包含文件中,请在veyr顶部写下:
<?php
defined('AAA') or die('Access denied.');
?>
或者,您可以使用htaccess文件。
答案 3 :(得分:1)
你的包含php文件除非在其中调用函数,否则不应该执行任何操作,并且你应该确保扩展名是php,或者使用php编译的其他扩展名(如includes.php)。例如,如果你有includes.inc,某些服务器只会显示该文件的源代码,这首先会造成安全漏洞。如果您遵循这些规则,您甚至不必检查其他变量等。
答案 4 :(得分:0)
您可以在主页面上设置变量,并对包含的页面进行简单检查。如果未设置变量,则不显示页面。它不漂亮,但它会工作....
即
//On the main page
$check = true;
include(../someFile.php);
//someFile.php
if($check == true){
//Display your content
}