对于php中几种字符过滤的用法我有点混乱,不知道什么时候该用哪种方法,请教知道的人帮我梳理下:
1、htmlspecialchars 屏蔽用户提交非法字符
2、htmlentities 转化所有html代码
3、addslashes \ mysql_real_escape_string意思明白,就是对什么时候用哪个不太清楚

解决方案 »

  1.   

    1、htmlspecialchars: 
        & -> &
        " -> "
        ' -> '
        < -> &lt;
        > -> &gt;
    防止浏览器把以上的字符当作控制字符处理比如<br>表示换行(页面不显示<br>,只会换行),如果你想在页面显示<br>就要用&lt;br&gt;2、htmlentities和htmlspecialchars用法类似3、addslashes是给字符串加\(即转义字符),比如''在数据库语句中是判断它包含的是否是字符串,如果你想在字符串的内容里包含'',就必须用\'来表示,否则系统会把它当作控制字符处理。
    比如字符串'It's a test.'数据库会认为是It 和后面一个不全的语句(因为'没有成对出现)
    要数据库正确处理,必须是'It\'s a test.', 这样数据库才认为是It's a test这个字符串。
      

  2.   

    addslashes 在php.ini中magic_quotes_gpc=on时默认的,所以不用addslashes几乎用不着
      

  3.   

    即使默认转义也似乎没什么影响。因为我们网站就默认开启了,还是用addslashes,也没出问题