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