关于PHP的addslashes(), stripslashes(), magic_quotes_gpc(), mysql_real_escape_string()

addslashes()

为 单引号 ('),双引号 ("),反斜杠 (\),NULL 加转义反斜杠。注意,这里不包括 分号(;),如果使用这个来转义,保险起见,在使用addslashes之后,用字符串替换将分号替换成转义的形式(\;)比较好。

stripslashes()

将addslashes处理过的字符串恢复。

mysql_real_escape_string()

可以将MYSQL查询中可能出现的特殊字符都转义掉,所以,在mysql_query()之前,用它处理一下是很不错的,但只在PHP4.3.0之后被支持,并且要注意,

magic_quotes_gpc()

如果magic_quotes_gpc 为 on,所有的 GET、POST 和 COOKIE 数据会被自动运行 addslashes()。

考虑到上述问题之后的转义函数:

function escape_str($str){ 
  if(PHP_VERSION >= "4.3.0"){ 
    if(get_magic_quotes_gpc()) $str=stripslashes($str); 
    $str=mysql_real_escape_string($str); 
  }else{ 
    if(!get_magic_quotes_gpc()) $str=addslashes($str); 
      $str=str_replace($str,";",'\;'); 
  } 
  return $str; 
}

字符串转义图解

仅有一条评论 »

  1. 扬灵 October 8th, 2009 at 12:16 am

    还是看不懂。题目太长了。
    顺便来说一句我换博客了:forvista.blogbus.com

添加新评论