Проблема кодирования при использовании метода htmlentities - PullRequest
4 голосов
/ 25 января 2011

У меня проблема с кодировкой символов в 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');

Данные будут добавлены в таблицу базы данных, вы видите, что эти данные поступают из формы комментариев, поэтомукогда пользователь вводит некоторые комментарии с символами восточных языков (арабский, иврит и т. д.), входные данные изменяются на что-то вроде:

Ø´Ù�Ø ± ا عÙ�Ù�اÙ�Ù�Ù�ضÙ�Ø

Я попытался удалить метод htmlentities, и он работает нормально, но все же возникает другая проблема безопасности формы комментариев (будут выполняться js-скрипты)

Что я могу сделать в этой ситуации?

и спасибо

Ответы [ 2 ]

2 голосов
/ 16 декабря 2014

На мой взгляд, и согласно PHP документу , принятый ответ неверен.Нигде не написано, что эта функция устарела.

Если вы правильно установите третий аргумент функции, называемый $encoding, это решит вашу проблему.

Надеюсь, это поможет.

2 голосов
/ 25 января 2011

Никогда не используйте htmlentities ().

Эта функция давно устарела.Вместо этого используйте htmlspecialchars().

В вашем коде также есть куча глупостей

  • Выполнение htmlentities(nl2br(*)) не имеет смысла.

  • делает полосные косые черты условными, только если включены магические кавычки.

  • возможна проблема с полем pays.

  • Я также боюсь, что вы воспринимаете htmlentities как своего рода функцию escaing SQL.Я прав?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...