php $_COOKIE['name']=,关于php的几个转义函数

一、get_magic_quotes_gpc()

检测get_magic_quotes_gpc 取得 PHP 环境变量 magic_quotes_gpc 的值

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

默认情况下,PHP 指令 magic_quotes_gpc 为 on,可在配置文件php.ini中查看

它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。

echo get_magic_quotes_gpc();  // 0关闭 1打开

?>

二、addslashes()与stripslashes()

addslashes在字符是单引号(')、双引号(")、反斜线(\)与 NULL(NULL 字符)前加上反斜线。

例子:

$str = "Is your name O'reilly?";

// 输出:Is your name O\'reilly?

echo addslashes($str);

结论:不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),

因为这样会导致双层转义。所以要使用addslashes最后先判断是否打开了magic_quotes_gpc

stripslashes()

返回一个去除转义反斜线后的字符串(\' 转换为 ' 等等)。双反斜线(\\)被转换为单个反斜线(\)。

三、mysql_escape_string()与mysql_real_escape_string()

mysql_escape_string转义一个字符串安全用于 mysql_query

两者的区别是:

mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。

结论:推荐尽量使用 mysql_real_escape_string而不是mysql_escape_string

mysql_real_escape_string与addslashes的区别

addslashes是强加,mysql_real_escape_string是需要的时候才转义。

结论:执行mysql插入或更新语句前推荐使用mysql_real_escape_string()

四、htmlspecialchars、htmlentities、htmlspecialchars_decode

htmlspecialchars转换特殊字符为HTML实体

转换规则

'&' (&符号)   变为 '&'

'"' (双引号)   变为 '"'

''' (单引号)   变为 '''

'

'>' (大于号)  变为 '>'

htmlentities 却会转化所有的html代码,连同里面的它无法识别的中文字符也给转化了。

一般情况使用htmlspecialchars就可以,实在要使用 htmlentities 时,要注意为第三个参数传递正确的编码。

在做用户注册或留言板的时候一定要进行转义,如果一个用户注册用户名的时候

输入的是

mafei

不转义,读出来的数据就是mafei,导致页面显示错误(错位等)的

所以插入数据库的时候要htmlspecialchars一下,读取的时候要htmlspecialchars_decode

五、一个插入或更新数据时防止注入的函数

适用于向mysql插入或更新数据

function escapize($arr) {

if (is_array($arr))

{

foreach ($arr as $key => $value)

{

$arr[$key] = escapize($value);   //这里采用了递归

}

}

if (is_string($arr))

{

$arr = htmlspecialchars(mysql_real_escape_string($arr));

}

return $arr;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值