查看文章 |
程序员应该维护用户真实意愿,保持用户真实输入,精益求精
2008-12-31 14:20
以下应该是我04年前后刚学动态网站建设时写的一篇文章,现在看来还是很有参考价值,甚至是很前沿,所以从百度上搜了出来。 用PHP编写留言本应注意的问题 一、防止表格变形 在相应表格标签中加入 style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" 二、屏蔽html代码 在提交留言时把留言内容中的"<" 和 ">" 替换成 &lt; 和 &gt;即可。 三、替换硬回车 即保留签写留言者写留言时的样式,这也需要用到替换 在ASP中替换chr(13)为<br> 在PHP中替换" "为<br> 注意:如果要结合屏蔽html代码,必须先替换第二点所说的再替换第三点 欢迎提供编写留言本中其它应该注意的问题! 为什么这么说呢?在工作的近三年中,我的所有同事中,没有一个能忠于用户的真实意愿,当用户输入“&”字符,甚至是单引号,双引号,+号,script,html代码,会自动把这些给过滤掉,自认为这样做是为了保证网站安全。其实不然,如果我们后台做好相应的转义工作,这样的担心简直就是杞人忧天 。就拿一个留言本,或者一个心情来说(就是当下SNS最流行的用户更改心情,状态之类的东西,类似于QQ的签名),通常这类是只出现纯文本之类的东西。可能会有一些用户要输入一些死循环之类的script,但也有可能有用户在留言本中交流html代码之类的东西,如果一概而论过滤掉,那用户的真实意愿呢?谈何用户体验? 在我眼中,用户体验就是维护用户真实意愿,做到像博客这样的标准才行,输什么显示什么(当然像留言本或状态这类是不支持html代码的,所以应该把用户的html代码显示出来,而不是屏蔽)。 另外还有一个在现实工作中,经常发现各类网站出现的一个bug,那就是比如输入 a=b&c=d&z=x这类字符串,或者是一个动态的网址,第一个&符号之后的东西全部会截掉而不显示,通常这类网站都是通过ajax提交的,所以在js端中会认为&后面是提交的另一参数,导致被截取,这是很多sns网站没有注意的地方,最简单的解决方法就是把 & 替换成%26 或者用encodeURIComponent进行转义。 |
最近读者: