Discuz的一些参数解析

本文介绍了PHP环境的配置方法,包括错误报告等级设定、自动转义功能控制、全局变量兼容性处理等内容,并提供了安全实践建议,如检测机器人访问、过滤提交变量等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.定义PHP环境

error_reporting:设定错误讯息回报的等级。

error_reporting(0):表示屏蔽一些错误,但是PHP 核心造成的错误,是无法屏蔽的,因为PHP 核心造成的错误会直接导至PHP文件编译失败。

其中还有一下等级:

1         E_ERROR
2         E_WARNING
4         E_PARSE
8          E_NOTICE
16        E_CORE_ERROR
32      E_CORE_WARNING
64        E_COMPILE_ERROR
128     E_COMPILE_WARNING
256     E_USER_ERROR
512     E_USER_WARNING
1024   E_USER_NOTICE
2047   E_ALL
2048   E_STRICT
E_NOTICE 表示一般情形不记录,只有程式有错误情形时才用到,例如企图存取一个不存在的变数,或是呼叫 stat() 函式检视不存在的档案。


E_WARNING 通常都会显示出来,但不会中断程式的执行。这对除错很有效。例如:用有问题的常规表示法呼叫 ereg()。
E_ERROR 通常会显示出来,亦会中断程式执行。意即用这个遮罩无法追查到记忆体配置或其它的错误。
E_PARSE 从语法中剖析错误。
E_CORE_ERROR 类似 E_ERROR,但不包括 PHP 核心造成的错误。
E_CORE_WARNING 类似 E_WARNING,但不包括 PHP 核心错误警告。

2.

set_magic_quotes_runtime(0)  关掉自动转义功能

set_magic_quotes_runtime(1)  打开自动转义功能

程序中检测状态用get_magic_quotes_runtime,返回 0 表示关闭本功能;返回 1 表示本功能打开。若 magic_quotes_runtime 打开时,所有外部引入的数据库资料或者文件等等都会自动转为含有反斜线溢出字符的资料。

例如:

当你的数据中有一些
/
"
'
这样的字符要写入到数据库里面,又想不被过滤掉的时候,它就很有用,会在这些字符前加上/

中国/地大物博"哈哈"

中国//地大物博/"哈哈/"

 

3.  设置discuz的开始时间
  1. $mtime = explode(' ', microtime());
  2. $discuz_starttime = $mtime[1] + $mtime[0];

   定一个开始的时间,这样我们在论坛底部看到的Process Time就是通过这个开始的时间和一个结束的时间的差来计算的。4.通用性
if(PHP_VERSION < '4.1.0') {

 

        $_GET = &$HTTP_GET_VARS;

 

        $_POST = &$HTTP_POST_VARS;

 

        $_COOKIE = &$HTTP_COOKIE_VARS;


        $_SERVER = &$HTTP_SERVER_VARS;


        $_ENV = &$HTTP_ENV_VARS;


        $_FILES = &$HTTP_POST_FILES;
}

 

PHP以4.1为一个分界线,在4.1以下以$HTTP_GET_VARS[‘xx’]这样的方式来得到get过来的值,而以后用$_GET来得到get过来的值,这样做的目的是为了无论是什么样的PHP版本,都能用$_GET这样的方式得到,有通用性~!

 

 

5.查看浏览者是否机器人

define('ISROBOT', getrobot());
if(defined('NOROBOT') && ISROBOT) {
        exit(header("HTTP/1.1 403 Forbidden"));
}

 

其中getrobot()在include/global.inc.php目录下,这个文件是Discuz的核心函数文件,包含了Discuz用到的很多通用的函数,可以说它就是一个大的通用函数库。

其中getrobot()函数的代码为:

function getrobot() {
        if(!defined('IS_ROBOT')) {
                $kw_spiders = 'Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla';
                $kw_browsers = 'MSIE|Netscape|Opera|Konqueror|Mozilla';
                if(preg_match("/($kw_browsers)/", $_SERVER['HTTP_USER_AGENT'])) {
                        define('IS_ROBOT', FALSE);
                } elseif(preg_match("/($kw_spiders)/", $_SERVER['HTTP_USER_AGENT'])) {
                        define('IS_ROBOT', TRUE);
                } else {
                        define('IS_ROBOT', FALSE);
                }
        }
        return IS_ROBOT;
}

 

 6.过滤提交的变量用的,提高安全性

define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
isset($_REQUEST['GLOBALS']) && exit('Access Error'); //判断表单中是否有global变量,以防覆盖系统的global变量
foreach(array('_COOKIE', '_POST', '_GET') as $_request) {
        foreach($$_request as $_key => $_value) {
                $_key{0} != '_' && $$_key = daddslashes($_value);
        }
}
(!MAGIC_QUOTES_GPC) && $_FILES = daddslashes($_FILES); 

daddslashes函数防止SQL注入的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值