0

我在一个视图中生成这个:

<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 数据,因此这部分对我来说相当清楚)。

4

2 回答 2

1

您实际上并不需要引用,因为打印htmlspecialchars($_POST['test'])(或只是设置Content-Type: text/plain)会立即显示 $_POST 中的数据不是实体编码的。

你也不需要调用htmlentities来编码视图中的数据——htmlspecialchars如果你的目标是生成有效的标记就足够了。

于 2012-11-06T13:35:32.963 回答
0

发送表格,您可以做到。更好的检查

于 2012-11-06T13:38:15.250 回答