【问题标题】:Tags <script> cut out of the field <textarea> after the form is submitted标签 <script> 在表单提交后切出字段 <textarea>
【发布时间】:2012-08-17 20:05:03
【问题描述】:

我在从表单发送 POST 数据时遇到问题。表单中有一个&lt;textarea&gt;,我试图在其中粘贴一些包含标签&lt;script&gt; 的数据(例如,网站流量的计数器代码,没关系)。

<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'] 变量中缺少标签&lt;script&gt;。当我在同一字段中插入任​​何其他标签时,不会出现此问题。

var_dump($_POST["content"]);

给予

string(18) "一些&lt;b&gt;text&lt;/b&gt;

"

谁能解释我在提交表单时&lt;textarea&gt; 字段中的标签&lt;script&gt; 会发生什么,以及为什么它们在$_POST['content'] 变量中不存在?我网站的后端位于 Kohana Framework v.2.4 上。也许是 Kohana 剪切了标签......或者,也许,Apacahe 或 PHP 设置中是否有一个选项可以执行此操作? 提前致谢。

【问题讨论】:

  • 您确定它们没有在页面源中显示吗?
  • 使用 addlashes($_POST["content"]);
  • addslashes($_POST["content"]) 不起作用,因为 $_POST["content"] 变量中没有
  • @khomyakoshka 您是将&lt;script&gt; 标记放在源代码中还是通过手动将其添加到表单中来提交?如果你在看我的答案之前把它放进去;-))
  • @thedom,我通过手动添加到表单来提交

标签: php html forms apache kohana


【解决方案1】:

如果之前放了&lt;script&gt;-tag,需要进行编码,让浏览器不解析内容

所以 - 使用 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>

【讨论】:

  • 如果我想从剪贴板粘贴 js 脚本 htmlspecialchars() 对我没有帮助
  • @khomyakoshka 这就是你的问题的问题。我不清楚,所以我又问了一遍。之后你需要htmlspecialchars()它。 &lt;?php echo(htmlspecialchars($_POST['content'])); ?&gt; - 如果这不起作用,我猜是一个函数在操纵 GPC 数组
  • 试着解释一下。我将任何数据复制到剪贴板,然后将其插入到字段中。之后我发送表格。在服务器端,我得到带有“内容”元素的 POST 数组,其中包含粘贴到
  • 我不知道你的代码库。但它几乎必须是任何操纵您的$_POST 元素的东西。它可能是一个自动执行的全局函数。检查回来。 pastie.org/4567888 看看那个...有效 ;-))
  • 感谢您的帮助。我网站的后端位于 Kohana Framework v.2.4 上。也许是小花剪掉了
【解决方案2】:

因为它被解析为 HTML script 标签,而不是被视为文本。使用 html-entities 将其解析为文本。

所以,它会是:

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

【讨论】:

  • 非常感谢您的回答。现在我这样解决。我写了一个 JS 函数来解析输入的数据并替换 {{--script--}} 上的标签
猜你喜欢
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 2016-04-14
  • 2011-08-02
  • 2010-10-21
  • 1970-01-01
相关资源
最近更新 更多