php中禁止非法调用和硬路径引入文件的方法
php中禁止非法调用和硬路径引入文件的方法
在php中有一些公共的文件为了方便,我们会做一个公共文件,让不用的文件共同调用。为了禁止公共文件被非常单独调用,
可以在文件上做一个常量,禁止非常调用:
在公共文件上定义一个常量如下
1 | define( 'custom_string' ,true); |
在要调用的文件里也加上一个判断来调用公共文件:
1 2 3 | if (!defined( 'custom_string' )) { exit ( '非法调用' ); } |
一般地,要调用文件可以用include,include_once,require, require_once去调用了,但是从速度角度考虑,可以用硬路径去引入文件。
在php中用魔法常量__FILE__可以获取文件的路径 ,用dirname(__FILE__);可以得到根目录地址,
如引入header.php文件,可以用下面的方法引入:
1 | require dirname( __FILE__ ). '/filename.php' ; |
但是有时候经常调用这个dirnam可能会不方便,可以把空上路径转化为一个常量,方便去调用。
php里的substr()函数可以截取出文件的根目录。可以这么把这个路径定义成一个常量:
1 | define( 'SITE_PATH' ,substr(dirname(__FILE__), 0 , - n)); |
用负数可以让文件截取的时候从后面开始截取,n为公共文件存放的路径字符数量。比如公共文件存放相对路径为abc/includes/filename.php,则n的abc/includes的字符长度数:12。定义为常量之后可以直接用常量去引入路径:
1 | require SITE_PATH. 'filename.php' ; |