使用htmlentities方法时的编码问题

时间:2011-01-25 10:26:23

标签: php encoding

我在php中遇到了字符编码的问题,所以这是php代码:

n_event=$_GET['ndlann'];
$nom_complet=htmlentities(stripslashes($_POST['nom']));
$email_comment=htmlentities(stripslashes($_POST['email']));
$titre_comment=htmlentities(stripslashes($_POST['titre']));
$texte_comment=htmlentities(stripslashes(nl2br($_POST['commentaire'])));
$pays_comment=$_POST['pays'];
$date_ajout=date('Y/m/d');

数据将添加到数据库表中,您会看到此数据来自评论表单, 因此,当用户使用东方语言carachters(阿拉伯语,希伯来语等)输入一些注释时,输入数据将更改为:

  

Ø'٠راع٠٠ا٠٠٠ض٠Ø

我试图删除htmlentities方法并且工作正常,但确实启动了另一个注释形式安全问题(将执行js脚本)

这种情况该怎么办?

并谢谢

2 个答案:

答案 0 :(得分:2)

不要使用htmlentities()。

此功能很久以前就已经过时了。 请改用htmlspecialchars()

你的代码中也有一堆废话

  • htmlentities(nl2br(*))毫无意义。

  • 只有在设置了魔术引号时才会使条带条件成为条件。

  • pays字段可能存在问题。

  • 我也担心你会把某些SQL升级函数作为一种新功能。我是对的吗?

答案 1 :(得分:2)

在我看来,根据the PHP doc,接受的答案是不正确的。 无处可写该函数已被弃用。

如果正确设置了函数的第三个参数,称为$encoding,它将解决您的问题。

我希望这会有所帮助。