Discuz 出现Access Denied错误提示的原因及解决方法

Discuz 出现Access Denied错误提示的原因及解决方法

         为了提高开发的插件的安全性问题,对于非直接执行的程序,所谓非直接运行的程序,就是你那个程序不应该直接通过地址访问的,比如,新核心开发中的页面嵌入和特殊主题的类都是如此。
对于此类程序,务必在开头加上:
if (!defined('IN_DISCUZ') || !defined('IN_ADMINCP')){
    exit('Access Denied');
}
 
这一段代码是保证你的持续运行在discuz中而非直接通过浏览器访问。

        在执行discuz工程的时候出现了“Access Denied”的错误,一般的原因有:
      (1)数据库操作出现错误:
                table文件夹的数据库操作文件(数据库操作语句)出现错误,或者数据库数据出问题(一条数据里某些字段没有数据,但其属性又是“不允许为空”)
      (2)在上面的代码中,exit('Access Denied')在条件句里执行,而条件语句出现了问题
               e.g. 
<a href="xx.php?id=1&step=first">第一</a>
<a href="xx.php?id=1&step=second">第二</a>
if (!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
    if ($_GET['step'] && $_GET['step'] != 'first') {
        exit('Access Denied');
    }
}

       两个链接,点击第一个的时候,不会出现错误,但是点击第二个,会出现“Access Denied”的错误;原因是判断的代码中没有对第二个链接进行条件判断,应该加上在if条件里追加$_GET['step'] != 'second'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值