我正在阅读一些“遗留”代码并发现了一些我不太了解的内容。这是代码:
$name = $_POST['name'];
$name = htmlspecialchars_decode($name);
$name = addslashes($name);
$name = htmlentities($name, ENT_NOQUOTES, 'UTF-8');
$name = html_entity_decode($name);
InsertIntoDatabase($name); //SQL server
我个别理解每一行,但我的问题是:
为什么程序员会这么做?
首先,所有这些代码似乎都没用。 htmlentities
和html_entity_decode
相互抵消,htmlspecialchars_decode
似乎无用,addslashes
实际上在我们的数据库中插入垃圾,方法是在每\
之前添加'
; < / p>
所以,我觉得要删除所有内容,但它让我觉得以前的开发人员在代码库中无处不在地添加了这个构造。他必须有充分的理由。正确?
我们(仍)使用php 5.3。任何线索为什么他都这样做了?
答案 0 :(得分:1)
这实在是太过分了,如果你想删除HTML字符,只有htmlentities
或htmlspecialchars
才有用
但是,您应该仍然可以看到这些值是如何在数据库中存储和使用的,因为添加斜杠是一种指定转义字符的旧方法