php

PHP 头部defined('IN_SYS')) 有什么作用?

2023-09-21

defined() 函数检查某常量是否存在 , 存在的话返回true ;

在A页面使用define定义常量x , 在B页面使用defined来确认常量存不存在 , 如果不存在 , 就是非法包含.

通常define和defined配合使用 , 可以用来控制文件的访问权限,比如,我们不希望一个模板文件被直接通过链接地址被别人访问。我们可以在每个模板文件头,写上defined('XXX') or die()。


==========


在很多页面 经常会看到下面 两句,是为了不让人随意远程调用.

1、define('IN_SYS'), true); //定义常量

一般在一些特定的入口页面 才会有这个 代码,

就是说 必须从 这个页面访问。

2、defined('IN_SYS')); //检查 是否定义了 常量

这个代码后面应该还有个 结束程序的代码。

禁止 这个文件单独执行的 或被访问。 都是被 include 到 其他页面的。


如果去掉了 “defined('IN_SYS'));  这一句,有些本该导入的 PHP文件 如果别人直接打开的话 就会出现程序错误, 显示错误是不应该的。别人可以根据错误信息 也能得到服务器相关信息。还有一些模板文件  如果没有加上这个代码, 直接就可以访问 查看,