2016-09-16 73 views
-1

我正在浏览一些“遗留”代码,发现了一些我不太明白的东西。下面是代码:奇怪的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 

我明白每一行的个体,但我的问题是:

为什么程序员做这些?

起初,所有这些代码似乎没用。 htmlentitieshtml_entity_decode相互抵消,htmlspecialchars_decode似乎毫无用处,addslashes实际上在我们的数据库中插入垃圾,在每'之前加入\;

所以,我觉得要把它全部删除,但是它让我感到前面的开发者在代码库中无处不在地添加了这个构造。他必须有一个很好的理由。对?

我们(仍)使用php 5.3。任何线索他为什么这么做?

+0

我唯一可以猜到的是,他想与其他语言兼容,然后他不必添加\作为转义字符,但即使如此,它似乎真的浪费...... – namlik

+1

没有语境,我们可以不知道程序员在想什么。如果这确实只是一种清理变量的方法,所以它可以进入数据库,那么它只是垃圾。但是,如果要删除它,则需要通过数据库并将其全部撤消。也许这是因为人们不愿意花时间和精力去修复它而留下的。 – apokryfos

回答

1

这实在是大材小用,只有当你想删除HTML字符htmlentitieshtmlspecialchars将是有益这里

您应该然而,仍然可以看到如何将这些值存储在数据库中,因为加斜杠是一个老办法指定转义字符

+0

奇怪的部分是,他开始与htmlspecialchars_decode而不是htmlspecialchars。 – Gudradain

+0

嗯,我无法解释你为什么提供了那么多背景 – rak007