首頁 > 後端開發 > php教程 > define常量如何防止地址栏直接访问后台文件的

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

WBOY
發布: 2016-06-13 10:15:17
原創
739 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板