php 敏感字符,php过滤敏感字符的一些相关函数--魔法函数应用

Warning: strncmp() has been disabled for security reasons in /www/web/default/blog/public_html/wp-includes/formatting.php on line 117

一,首先,先来看一下php.ini的两个配置参数

magic_quotes_gpc "1" PHP_INI_PERDIR PHP_INI_ALL in PHP <= 4.2.3. Removed in PHP 6.0.0.

作用范围是:WEB客户服务端;

作用时间:请求开始是,例如当脚本运行时

magic_quotes_runtime "0" PHP_INI_ALL Removed in PHP 6.0.0.

作用范围是:影响从文件中读取的数据或从数据库查询得到的数据。

以下是一些常用到的方法:

get_magic_quotes_gpc(void)

本函数取得 PHP 环境配置的变量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。

返回 0 表示关闭本功能;

返回 1 表示本功能打开。

当 magic_quotes_gpc 打开时,所有的 ' (单引号), " (双引号), \ (反斜线) and 空字符会自动转为含有反斜线的溢出字符。

应用:

由于该参数不支持在php文件进行设置,如果通过本函数取得的变量magic_quotes_gpc 的值为false,我们可以

利用addslashes()人工使用反斜线引用字符串

$var = get_magic_quotes_gpc()?$var:addslashes($var);

相反,如果通过本函数取得的变量magic_quotes_gpc 的值为true,我们希望字符串不被转义,那么可以利用stripslashes()去除自动添加的反斜杠

get_magic_quotes_runtime()

一般情况下,应当将其关闭,否则从数据库读取出来的数据单引号、双引号和反斜杠都会被加上\,导致显示不正常。像Discuz,PHPWind都在公共文件的头部加上一句

set_magic_quotes_runtime(0)

// Check if magic_quotes_runtime is active

if(get_magic_quotes_runtime())

{

// Deactive

set_magic_quotes_runtime(false);

}

二、对于magic_quotes_runtime,我们统一关闭它,即set_magic_quotes_runtime(0);不让从数据库读取出来的数据的单引号、双引号和反斜杠都自动被加上\。这样,对数据库的操作如下:添加数据到数据库之前,我们手动对数据进行addslashes(),而从数据库取出数据时,则作相反操作,即stripslashes()。

三、对于要序列化的内容,要保持裸数据,即要去掉转义,stripslashes(),然后在把序列化过的内容保存到数据库当中(注意,序列化过的内容是不带单引号(')、双引号(")、反斜线(\)的),示例如下:

$feedarr['body_data'] = serialize(stripslashes($body_data));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值