У меня есть форма, которая принимает ввод текста. Мне бы хотелось, чтобы он мог принимать такие символы, как & и; и> и <, которые являются полезными символами для данных, предоставляемых пользователем. Я хочу, чтобы пользователь, например, мог сказать </p>
Амперсанд (&) кодируется как &
(и я вижу из предварительного просмотра, что я не могу даже сделать это здесь - это должно выглядеть
Амперсанд (&) кодируется как & amp;
но я должен был набрать amp; после амперсанда, чтобы заставить это выглядеть правильно.)
(кстати, предварительный просмотр классный, но я не могу рассчитывать на то, что у пользователей включены сценарии)
Я анализирую данные, и если с ними возникает проблема, я представляю запись пользователя обратно пользователю в той же форме, предварительно заполненной в том же поле, для редактирования и повторной отправки.
Если я представляю необработанные данные, я рискую иметь враждебный ввод (такой как сценарии или HTML), выполняемый браузером. Тем не менее, если я отфильтрую его (например, через htmlspecialcharacters), то пользователь увидит (представление) введенного им символа (скажем, амперсанд), но когда он повторно отправит, он фактически отправит замена (в данном случае это выглядит как & amp;), которая, как оказалось, даже содержит амперсанд. Если с входными данными все еще есть проблема, они будут снова представлены для редактирования, и мы будем на другом уровне с глубокими заменами.
Пользовательские данные принимаются только тогда, когда то, что пользователь фактически представляет, идентично обеззараженной версии данных. Он предназначен для текстового файла на сервере и электронного письма, отправленного в организацию за сайтом.
Полагаю, «вопрос, на который можно ответить», - «возможно ли это?»
Хосе
редактирование:
<?php
$var=$_GET["test2"];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Input Escape Test</title>
</head><body>
The php parser would store the following input:<br>
<?php echo $var ?>
<br>
<form method="get" action="test.php"><p>
<label for "test2">Test - question five: <br>type in a character on the first line<br>and its HTML entity on the second line.
<textarea name="test2" cols="50" rows="3"><?php echo $var; ?></textarea><br/>
<input type="submit"/>
</p></form>
</body></html>
приводит к форме, в которой пользователь пытается ответить на вопрос
амперсант
амперсанд а м р точка с запятой.
ЕСЛИ это отклоняется (скажем, из-за других недопустимых символов), пользователю предоставляется обратный ввод, за исключением вырезанных символов. Тем не менее
точка с запятой
также убирается из поля зрения (хотя оно есть в источнике).
Затем пользователь попытается добавить еще одну точку с запятой к отображаемому результату.
Единственный способ увидеть пользователя
амперсанд а м р точка с запятой
отображается (при отклонении ввода), введите
амперсанд а м р точка с запятой а м р точка с запятой
Наконец, довольный, пользователь снова нажимает на кнопку «Отправить», и точка с запятой, похоже, снова исчезает. Пользователь не знает, что его (представленный) ответ будет сохранен как.
Я хочу, чтобы пользователь мог набирать:
амперсанд а м р точка с запятой
и, при отклонении, см.
амперсанд а м р точка с запятой
и после принятия хранить
амперсанд а м р точка с запятой
Хосе