我在视图中生成了这个:
<form method="post">
<input type="hidden"
name="test"
value="<?=htmlentities('<>"&ščé', ENT_QUOTES, 'UTF-8')?>">
<input type="submit>
</form>
现在,我应该在处理表格中的数据时这样做吗?
$decodedTest = html_entity_decode($_POST['test'], ENT_QUOTES, 'UTF-8');
我认为这应该是好的:
$decodedTest = $_POST['test'];
但我没有找到对此的引用。
编辑:我打印了test
的发布值,我看到该值未编码。我不知道的是,如果我能依赖这个行为以及原因。我问的是操作理论。如果我查看原始帖子请求,我可以看到帖子数据是urlencoded(我猜这是一种不同于htmlentities的编码类型)。这是否意味着客户端必须在发送请求之前执行一些重新编码。 (客户端)浏览器在发送之前是否将编码形式或解码形式的输入值存储在内存中? (我已经知道php会自动解码请求中的urlencoded数据,因此这部分对我来说相当清楚。)
答案 0 :(得分:1)
您真的不需要引用,因为打印htmlspecialchars($_POST['test'])
(或只是设置Content-Type: text/plain
)会立即显示$ _POST中的数据不是实体编码的。
如果您的目标是生成有效的标记,您也无需致电htmlentities
对视图中的数据进行编码 - htmlspecialchars
即可。
答案 1 :(得分:0)
发送表单,即可完成。更好的检查