首页 > 后端开发 > php教程 > define常量如何防止地址栏直接访问后台文件的

define常量如何防止地址栏直接访问后台文件的

WBOY
发布: 2016-06-13 10:15:17
原创
749 人浏览过

define常量怎么防止地址栏直接访问后台文件的
define是不能跨页面的,但是最近看一个开源的PHP项目它是这样的:比如a.php :直接define('IN_TM', TRUE);
b.php直接if(!defined('IN_TM'))
{
exit('Access Denied');
}
if($_SESSION["admin"]!="Silence")
{
include template('login.htm');
  exit;
}。。。。。
就完全没用include包含!但是我这样模拟的时候define是不能跨页面的!它还有什么设置使得'IN_TM'在另一个页面有效吗?
类似于DISCUZ的防止地址栏直接访问后台文件又是怎么实现的呢?

------解决方案--------------------
如果你能确认在判断之前没有文件被显式的嵌入的话
那么他就是利用了 php.ini 中的 auto_prepend_file 

其实只要项目能运行, 你只需 打印出 get_included_files 的结果就知道什么文件被嵌入了

------解决方案--------------------
这个肯定有用include包含,只是你没看到
------解决方案--------------------
但是我这样模拟的时候define是不能跨页面的!它还有什么设置使得'IN_TM'在另一个页面有效吗?

b.php
if(!defined('IN_TM')) 
{
exit('Access Denied');
}

a.php
define('IN_TM', TRUE);
include 'b.php';

访问 b.php 必须通过访问 a.php 完成,否则就 Access Denied

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板