我正在检查一些"遗留"代码,发现了一些我不太理解的东西。下面是代码:
$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。知道他为什么这么做吗?
这太过分了,如果你想删除HTML字符,只有htmlentities
或htmlspecialchars
才有用