PHP, MySQL, кавычки и поля ввода

Я пытаюсь создать страницу редактирования для редактирования заголовка.

Этот заголовок будет отображаться как в теге «h3», так и в поле ввода.
Когда пользователь доволен заголовком, он отправляет его в mysql, где он сохраняется.
Страница обновится, и он сможет увидеть свой новый заголовок в теге «h3» и в поле ввода.

Проблема в том, что когда в заголовке участвуют кавычки, я не получаю тот же результат в теге «h3» и в поле ввода.

Вот как я получаю переменную, чтобы отправить ее в базу данных:

$title_set = $_POST['title'];

И вот как я отображаю переменную как в теге, так и в поле ввода:

$title_get = $result['denomination'];

С этим вот дисплей для заголовка: L’appel de la «forêt»

$title_set = $_POST['title'];
$title_get = $result['denomination'];

<h3>  -> No output
Input -> No output

Вариация 1:

$title_set = addslashes($_POST['title']);
$title_get = $result['denomination'];

<h3>  -> L'appel de la "forêt"Input -> L'appel de la

Вариация 2:

$title_set = addslashes($_POST['title']);
$title_get = stripslashes($result['denomination']);

<h3>  -> L'appel de la "forêt"Input -> L'appel de la

Вариация 3:

$title_set = mysql_real_escape_string ($_POST['title']);
$title_get = $result['denomination'];

<h3>  -> L'appel de la "forêt"Input -> L'appel de la

Очевидно, есть различия в способе, которым тег заголовка и поле ввода могут отображать динамические данные с кавычками, поля ввода являются более строгими.

И что же мне делать?

Мои страницы, скрипты и база данных закодированы в UTF_8

0

Решение

Перед вставкой данных в базу данных используйте экранирующую функцию, например mysql_real_escape_string (). Или, что еще лучше, переключитесь на PDO, чтобы вы могли использовать подготовленные запросы и передавать данные в качестве параметра. Это защищает от внедрения SQL. Увидеть Как я могу предотвратить SQL-инъекцию в PHP?

Прежде чем выводить в HTML динамический контент, извлеченный из базы данных, закодируйте его с помощью htmlspecialchars (). Это защищает от межсайтового скриптинга (XSS). Увидеть Как предотвратить XSS с HTML / PHP?

Дальнейшее чтение: https://www.owasp.org/index.php/OWASP_Top_Ten_Cheat_Sheet больше на инъекции и XSS рисках и средствах защиты.

1

Другие решения

Вам нужно использовать mysql_real_escape_string() при вставке значения в запрос MySQL. В противном случае кавычки во входных данных приведут к ошибкам синтаксиса SQL. Было бы еще лучше, если бы вы конвертировали в MySQLI или PDO и использовали параметры запроса вместо конкатенации строк.

Вы должны использовать htmlentities() при получении данных и отображении их на веб-странице. Это даст правильную кодировку HTML всех специальных символов.

0

По вопросам рекламы [email protected]