我有一个php文件,我将专门使用它作为include.因此,我想抛出一个错误,而不是在直接通过输入URL而不是被包含来访问它时执行它.

基本上,我需要在php文件中进行如下判断:

if ( $REQUEST_URL == $URL_OF_CURRENT_PAGE ) die ("Direct access not premitted");

有什么简单的方法可以做到这一点吗?

推荐答案

对于一般的"在Apache服务器上运行的PHP应用程序,您可以完全控制,也可以不完全控制"情况,最简单的方法是将您的include放入一个目录中,并拒绝您对该目录的访问.htaccess文件.为了省去人们在谷歌上搜索的麻烦,如果您使用的是Apache,请将其放在一个名为".htaccess"的文件中,该文件位于您不希望访问的目录中:

Deny from all

如果你真的完全控制了服务器(现在即使是小应用也比我第一次写这个答案时更常见),最好的方法是将你想要保护的文件粘贴到你的web服务器所服务的目录之外.因此,如果你的应用程序在/srv/YourApp/中,请将服务器设置为提供/srv/YourApp/app/中的文件,并将包含的内容放在/srv/YourApp/includes中,这样就没有任何URL可以访问它们.

Php相关问答推荐

在搜索表单查询中使用 PDO 准备语句 - PHP

Laravel:使用 HttpClient 的多个作业(job)的解决方案?

WooCommerce CSS 帮助更改订单备注输入框的大小

仅在第一个轮播单元格上添加课程(轻弹)

如何创建一个单独的类以在表中创建新记录并通过控制器上的接口调用它

htaccess 重写 url 以便仅在根目录而不是子目录中删除 php 扩展

是什么导致我的 Laravel 8 应用程序中出现此查询生成器错误?

PHP Carbon,获取日期范围之间的所有日期?

为什么 PHP 将上传的文件存储在临时位置,有什么好处?

PHP 7.2 函数 create_function() 已弃用

Laravel 5 显示 ErrorException file_put_contents 无法打开流:没有这样的文件或目录

配置:错误:请重新安装 libzip 发行版

未指定应用程序加密密钥

PHP7.1 json_encode() 浮动问题

如何在 Laravel 模型上设置属性的默认值

artisan 迁移错误“找不到类'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver'”,

使用 Carbon 和 Blade 计算两个日期之间的差异

如何在不使用 Firebase 控制台的情况下发送 Firebase 云消息传递通知?

清理用户密码

PHP - 为什么使用 Guzzle 而不是 cURL?