标记<;脚本>;剪切出字段<;text区域>;提交表格后


Tags <script> cut out of the field <textarea> after the form is submitted

我在从表单发送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实体将其解析为文本。

所以,它将是:

&lt;script src=&quot;script_source&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;