Подтвердить что ты не робот

Как правильно вывести значения формы ввода html в php?

Учитывая следующие два фрагмента HTML/PHP:

<input type="text" name="firstname" value="<?php echo $_POST['firstname']; ?>" />

а также

<textarea name="content"><?php echo $_POST['content']; ?></textarea>

какую кодировку символов мне нужно использовать для отраженных переменных $_POST? Могу ли я использовать любые встроенные функции PHP? Пожалуйста, предположим, что значения $_POST еще не были закодированы. Никаких волшебных кавычек нет ничего.

4b9b3361

Ответ 1

Используйте htmlspecialchars($_POST['firstname']) и htmlspecialchars($_POST['content']).

Всегда отключайте строки с htmlspecialchars(), прежде чем показывать их пользователю.

Ответ 2

Однако htmlspecialchars() не поможет вам с value='single quotes'

Вот что происходит:

value='We're not using this in our &quot;code&quot;...'

Все, что вы видите, это We

Ответ 3

htmlspecialchars будет работать в обоих случаях. Посмотрите на различные параметры флага, чтобы избежать кавычек, являющихся проблемой в случае input.

Ответ 4

Учитывая, что это довольно долго, я бы поместил это в функцию

<?PHP
function encodeValue ($s) {
    return htmlentities($s, ENT_COMPAT|ENT_QUOTES,'ISO-8859-1', true); 
}
?>

Он имеет ENT_QUOTES, чтобы обеспечить кодирование одинарных и двойных кавычек, но он также будет кодировать специальные символы (как в Хосе) вместо вставки пустой строки.

Тогда вы можете сделать:

<input type="text" name="firstname" value="<?= encodeValue($_POST['firstname']) ?>" />

а также

<textarea name="content"><?= encodeValue($_POST['content']) ?></textarea>

Ответ 5

Я часто использую

<input type="text" name="firstname" value=<?php echo json_encode($_POST['firstname']); ?>/>