php 过滤用户提交的信息防注入只用mysql_escape_string行不行? 这样做够不够安全??

解决方案 »

  1.   

    当然有区别的
    认真看手册,自己对比以下四段代码,弄明白了,你就清楚他们的区别了
    代码一:$conn = mysql_connect();
    mysql_select_db('databases');
    mysql_set_charset('gbk',$conn);
    mysql_query("insert test(`a`,`b`)values('".mysql_real_escape_string($a,$conn)."','".mysql_real_escape_string($b,$conn)."')",$conn);
    代码二:$conn = mysql_connect();
    mysql_select_db('databases');
    mysql_query('set names gbk',$conn);
    mysql_query("insert test(`a`,`b`)values('".mysql_real_escape_string($a,$conn)."','".mysql_real_escape_string($b,$conn)."')",$conn);
    代码三:$conn = mysql_connect();
    mysql_select_db('databases');
    mysql_set_charset('gbk',$conn);
    mysql_query("insert test(`a`,`b`)values('".mysql_escape_string($a)."','".mysql_escape_string($b)."')",$conn);
    代码四:$conn = mysql_connect();
    mysql_select_db('databases');
    mysql_query('set names gbk',$conn);
    mysql_query("insert test(`a`,`b`)values('".mysql_escape_string($a)."','".mysql_escape_string($b)."')",$conn);