我有一个接受文本输入的表单。我希望它能够接受 & 和 ; 等字符 和 > 和 <,它们是用户提供的数据的有用字符。例如,我希望用户能够说
与号 (&) 被编码为 & (我从预览中看到我什至不能在这里这样做 - 它应该看起来像 & 号 (&) 被编码为 & 但我必须输入 amp;amp;在&符号之后让它看起来正确。)(顺便说一句,预览很酷,但我不能指望用户启用脚本)
我解析数据,如果有问题,我会将用户的输入以相同的形式呈现给用户,预先填写在相同的字段中,以供编辑和重新提交。
如果我呈现原始数据,我会冒着被浏览器执行恶意输入(例如脚本或 HTML)的风险。但是,如果我过滤它(例如通过 htmlspecialcharacters),那么用户将看到(表示)他输入的字符(例如,& 符号),但是当他重新提交时,他将 =actually= 正在提交替换(在这种情况下看起来像&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>
导致用户尝试使用 & 和 & amp 分号回答问题的表单。如果被拒绝(比如说,因为其他非法字符),用户会看到他的输入,减去被剥离的字符。但是, amp 分号也被从视图中删除(尽管它在源代码中)。然后,用户将尝试在显示的结果中添加另一个 amp 分号。
用户看到显示的 & amp 分号(在拒绝输入时)的唯一方法是输入 & amp 分号 amp 分号
终于满意了,用户再次点击提交,amp分号貌似又消失了。用户不知道他的(提交的)答案将被存储为什么。
我希望用户能够输入:& amp 分号,并在拒绝时看到 & amp 分号,并在接受时存储 & amp 分号
何塞