我在从表单发送POST数据时遇到问题。表单中有一个<textarea>
,我试图粘贴一些包含标签<script>
的数据(例如,网站流量计数器代码,这无关紧要)。
<form action="/savepage" method="POST">
<button type="submit">Save</button>
<fieldset>
<textarea name="content">
Some <b>text</b>
<script src="script_source" type="text/javascript"></script>
</textarea>
</fieldset>
</form>
表单提交后,我收到了包含表单所有字段的$_POST
数组,但$_POST['content']
变量中缺少标记<script>
。当我在同一字段中插入任何其他标记时,不会出现此问题。
var_dump($_POST["content"]);
给出
string(18)"一些
<b>text</b>
"
有人能解释一下提交表单时<textarea>
字段中的标签<script>
会发生什么吗?为什么$_POST['content']
变量中没有这些标签?我的网站的后端位于Kohana Framework v.2.4上。也许是Kohana剪的标签。。。或者,也许,在Apacahe或PHP设置中有一个选项可以做这些事情吗?提前谢谢。
如果之前放入<script>
标记,则需要对其进行编码,这样浏览器就不会解析内容
因此,使用htmlspecialchars()
:
<form action="/savepage" method="POST">
<button type="submit">Save</button>
<fieldset>
<textarea name="content">
<?php echo(htmlspecialchars('
Some <b>text</b>
<script src="script_source" type="text/javascript"></script>'); ?>
</textarea>
</fieldset>
</form>
因为它被解析为HTML script
标记,而不是被视为文本。使用html实体将其解析为文本。
所以,它将是:
<script src="script_source" type="text/javascript"></script>