我正在浏览一些“遗留”代码,发现了一些我不太明白的东西。下面是代码:奇怪的PHP编码代码。任何原因?
$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
实际上在我们的数据库中插入垃圾,在每'
之前加入\
;
所以,我觉得要把它全部删除,但是它让我感到前面的开发者在代码库中无处不在地添加了这个构造。他必须有一个很好的理由。对?
我们(仍)使用php 5.3。任何线索他为什么这么做?
我唯一可以猜到的是,他想与其他语言兼容,然后他不必添加\作为转义字符,但即使如此,它似乎真的浪费...... – namlik
没有语境,我们可以不知道程序员在想什么。如果这确实只是一种清理变量的方法,所以它可以进入数据库,那么它只是垃圾。但是,如果要删除它,则需要通过数据库并将其全部撤消。也许这是因为人们不愿意花时间和精力去修复它而留下的。 – apokryfos