当前位置: 首页 > 图文教程 > 网络编程 > PHP > php addslashes和mysql_real_escape_string

PHP
php4的彩蛋
正则表达式例子:获得某个网页上的所有超裢接
正则表达式例子:在一个字符串中查找另一个字符串
正则表达式例子:将MM/DD/YYYY格式的日期转换为YYYY-MM-DD格式
Pattern Modifiers - 规则表达式的修饰符
PHP4实际应用经验篇(1)
PHP4实际应用经验篇(2)
PHP4实际应用经验篇(3)
PHP4实际应用经验篇(4)
PHP4实际应用经验篇(5)
PHP4实际应用经验篇(6)
PHP中的DOM XML函数
使用php动态生成gif时遇到的问题和解决办法
用PHP连mysql和oracle数据库性能比较
浅谈Windows下 PHP4.0与oracle 8的连接设置
用PHP调用数据库的存贮过程
用php与mysql的电子贺卡程序
挑战最棒的留言本的源码(一)
挑战最棒的留言本的源码(二)
如何实现日期比较,暨实现显示5天内,显示10天内的记录

PHP 中的 php addslashes和mysql_real_escape_string


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-02-27   浏览: 351 ::
收藏到网摘: n/a

本文介绍的是用 mysql_real_escape_string对用户提交数据进行整理处理和通过addslashes以及mysql_escape_string这3个类似的功能函数的区别。经过转义的数据可以直接插入到数据库中。 很好的说明了addslashes和mysql_real_escape_string的区别,虽然国内很多PHP coder仍在依靠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[‘lastname']);
} else {
$lastname = $_POST[‘lastname'];
}

最好对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 ,两者的区别是:
mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。
总结一下:
addslashes() 是强行加;
mysql_real_escape_string() 会判断字符集,但是对PHP版本有要求;
mysql_escape_string不考虑连接的当前字符集。