Heim > php教程 > php手册 > addslashes,mysql_real_escape_string和mysql_escape_string介绍

addslashes,mysql_real_escape_string和mysql_escape_string介绍

WBOY
Freigeben: 2016-05-25 16:47:47
Original
1271 Leute haben es durchsucht

本文章来给大家简单介绍关于在php中addslashes() ,mysql_real_escape_string() 和mysql_escape_string()的一些用法与区别,有举的朋友可参考.

以前还真没有关注过这面的事情.自己在写的时候都是用了一个很简单的函数addslashes() 函数在指定的预定义字符前添加反斜杠.

这些预定义字符是:

•单引号 (')

•双引号 (")

•反斜杠 ()

•NULL

实例代码如下:

<?php  
function as_array(&$arr_r)  
{  
    foreach ($arr_r as &$val) is_array($val) ? as_array($val):$val=addslashes($val);  
    unset($val);  
} 
as_array($_POST);  
?>
Nach dem Login kopieren

虽然国内很多PHP程序员仍在依靠addslashes防止SQL注入,还是建议大家加强中文防止SQL注入的检查.addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会 被看作是单引号,所以addslashes无法成功拦截.

当然addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string吧.另外对于php手册中get_magic_quotes_gpc的举例:

实例代码如下:

if (!get_magic_quotes_gpc()) { 
    $lastname = addslashes($_POST[&#39;lastname&#39;]); 
} else { 
    $lastname = $_POST[&#39;lastname&#39;]; 
}
Nach dem Login kopieren

最好对magic_quotes_gpc已经开放的情况下,还是对$_POST['lastname']进行检查一下.

再说下mysql_real_escape_string和mysql_escape_string这2个函数的区别:

mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用. mysql_escape_string (PHP 4 >= 4.0.3, PHP 5, 注意:在PHP5.3中已经弃用这种方法,不推荐使用),

<?php 
// 说明:用 array_map() 调用 mysql_real_escape_string 清理数组 
function mysqlClean($data) 
{ 
    return (is_array($data))?array_map(&#39;mysqlClean&#39;, $data):mysql_real_escape_string($data); 
} 
?>
Nach dem Login kopieren

两者的区别是:mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑.

总结一下:

实例代码如下:

<?php 
 function escape($str){ 
    if(function_exists(&#39;mysql_escape_string&#39;)){ 
        return mysql_escape_string($str); 
    }elseif( function_exists(...real_escape...)){ 
        //real_escape 
    }else{ 
        if(MAGIC_QUOTER ....判断){ 
            return $str 
        }else{ 
            return addslashes($str); 
        } 
    } 
} 
?>
Nach dem Login kopieren


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage