我有一个 php 文件,我将专门用作包含。因此,当通过键入 URL 而不是包含在内直接访问它时,我想抛出一个错误而不是执行它。
基本上我需要在 php 文件中进行如下检查:
if ( $REQUEST_URL == $URL_OF_CURRENT_PAGE ) die ("Direct access not premitted");
是否有捷径可寻?
对于通用的“在您可能完全控制或可能不完全控制的 Apache 服务器上运行的 PHP 应用程序”情况,最简单的方法是将您的包含放在一个目录中,并在您的 .htaccess 文件中拒绝对该目录的访问。为了省去谷歌搜索的麻烦,如果您使用的是 Apache,请将其放在您不想访问的目录中名为“.htaccess”的文件中:
Deny from all
如果您实际上可以完全控制服务器(这些天甚至对于小应用程序比我第一次写这个答案时更常见),最好的方法是将要保护的文件粘贴到您的 Web 服务器提供服务的目录之外. 因此,如果您的应用程序位于 中/srv/YourApp/,请将服务器设置为从其中提供文件/srv/YourApp/app/并将包含的内容放入 中/srv/YourApp/includes,因此实际上没有任何 URL 可以访问它们。
/srv/YourApp/
/srv/YourApp/app/
/srv/YourApp/includes