我的网站的主文件(的index.php)的代码是在这里:如何防止用户看到“包含文件”?
<?php
include 'header.php';
include 'sidebar.php';
include 'content.php';
include 'footer.php';
?>
但我不希望任何用户看到这些文件包括写“www.domain.com/header.php”。我应该在这些文件中插入一个php代码还是可能的?
我的网站的主文件(的index.php)的代码是在这里:如何防止用户看到“包含文件”?
<?php
include 'header.php';
include 'sidebar.php';
include 'content.php';
include 'footer.php';
?>
但我不希望任何用户看到这些文件包括写“www.domain.com/header.php”。我应该在这些文件中插入一个php代码还是可能的?
您可以在主文件中定义一个常量,并用它在你的包含文件DETEC它们是否真的包括或不包括:
的index.php
<?php
define('REALLY_INCLUDED', true);
include'header.php';
的header.php
<?php
if(!defined('REALLY_INCLUDED') || !REALLY_INCLUDED) {
exit();
}
...
您有几种选择。
exit
。+1,用于将所有这些文件从webroot中移出。 – Arkh
这里有一个PHP给你。
if(basename(__FILE__) == basename($_SERVER['PHP_SELF'])){exit();}
总之,如果调用文件本身就退出执行。
消息来源:http://thephpcode.blogspot.se/2009/07/creating-include-only-php-files.html
不错的工作,男人。在我看来,这是一个完美的答案。有时,将变量或常量应用于包含的文件是不可能的(也许很难),因为它们是通过AJAX调用的 –
...然后你忘记常量在某处并暴露该文件。 “哎呀呀”。如果你想要一些保密的东西,不要把它放在文档的根目录中。 –
这会引发一些不必要的警告。在定义期间添加引号:'define('REALLY_INCLUDED',true);'并使用正确的函数来检查常量是否被定义:'if(!defined('REALLY_INCLUDED')||!REALLY_INCLUDED){...' –
如果在另一个包含文件中调用了包含文件,该怎么办?第一个被Javascript调用?第一个不能定义这个常量,并检查这个常量是否已经同时被设置。它不会工作。我建议@AndreasEriksson的回答为 –