【问题标题】:PHP request variables are empty when textarea contains <script> tag当 textarea 包含 <script> 标签时 PHP 请求变量为空
【发布时间】:2011-08-21 22:17:23
【问题描述】:

我的网站上有一个表单,允许用户在我的网站上为动态生成的页面插入内容。该表单与其他控件一起具有一个文本区域,用户需要在其中键入/粘贴要用作页面主体的 html 代码。 只要文本区域不包含“脚本”标签,表单似乎就可以正常工作。当粘贴包含 script 标签的 html 代码并提交表单时,请求似乎被服务器杀死,$_POST、$_GET 和 $_REQUEST 变量为空。该代码在我的 Windows 测试机(WAMP 5.xx)上运行良好,但是,在托管网站(Linux 托管)的地方,代码将无法运行。 我读过类似的问题,有人在 .htaccess 文件中发布了以下代码会有所帮助,但对我来说没有帮助:

<IfModule mod_security.c>
     SecFilterEngine Off
</IfModule>

似乎存在一些配置问题,我还检查了两个系统的 phpinfo() 并且没有显着差异。 请帮忙,该网站需要在本周内上线。

【问题讨论】:

  • SecFilterScanPOST Off 怎么样?
  • mod_security 未安装在我的主机上,因此该标签内的任何内容都不起作用:(

标签: php apache tags textarea


【解决方案1】:

在提交之前过滤 标签怎么样?客户端 Javascript 可以解决问题。
也许正则表达式可以提供帮助。这样您就不必进行服务器配置,也不会危及安全

【讨论】:

  • 我不想过滤脚本,我希望它们在 php 发布的变量中可用。
  • 如果您在提交之前过滤它们(捕获提交事件),那么您可以在将它们作为 POST 变量获取它们之后取消过滤它们。一个快速的例子:客户端:把 变成 {{string}};服务器端:将 {{string}} 返回到 中;在提交之前过滤这些字符串,apache 不会过滤它们。
  • 看起来是个好主意,但如果在客户端禁用 javascript,问题仍然存在,因此需要部分修复。
  • 是的,如果您无法更改主机的配置,这只是一种解决方法,但是那里有这么多“禁用的 javascript 浏览器”,它们通常会发布
  • 不,抱歉,您可能需要就此提出一个新问题。
猜你喜欢
  • 2013-08-18
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
相关资源
最近更新 更多