【问题标题】:Handing post parameter with double quotes over multiple forms在多个表单上传递带有双引号的 post 参数
【发布时间】:2011-11-09 16:53:25
【问题描述】:

如何使用 POST 传递双引号?每次我尝试时,他都会第一次给我\',第二次给我\\\'\\\,以此类推。我用str_replace 试过,但它只适用于零件。有没有办法纠正这个问题?

编辑:

禁用magic_quotes_gpc 后,它仍然不能 100% 正确工作。我的第一个表单有一个隐藏的输入字段。它的价值

text 'textinquotes'

post 这个值被提交给另一个php 脚本。如果我输出我得到的变量

text \'textinquotes\'

如果用户忘记填写字段,我会根据post 将值提交给另一个 PHP 脚本。在这个 php 脚本中,我创建了一个 get,其中包含用户输入其值的 php 脚本的参数。在这种情况下,我得到

text \\\'textinquotes\\\'

如果用户输入的所有内容都正确,我会写一封电子邮件并将其存储在数据库中。在我收到的电子邮件中

text \'textinquotes\'

在我得到的数据库中

text 'textinquotes'.

我做错了什么?

为了创建get,我有以下代码:

$red = $referer."?error=1";
foreach($post as $post_key => $post_value) {
    $red .= "&".$post_key."=".$post_value;
}

【问题讨论】:

  • PHP 版本?看起来像一个 magic_quotes_gpc() 问题。
  • PHP 版本 5.3.8。 magic_quotes_gpc 已开启。 magic_quotes_runtimemagic_quotes_sybase 已关闭。

标签: php html forms post parameters


【解决方案1】:

它是由 PHP 在已弃用的 magic_quotes_gpc 功能中添加的,
或通过一些错位的通用输入“消毒”功能。

在任何一种情况下,您都必须找到原因并将其永久关闭。

您可以使用phpinfo() 来查看魔术的价值。

如果它是魔术引号并且您无法更改 php.ini 文件。设置,您至少可以清理超全局数组,这应该足够了。这个网站上有很多代码,例如这个How to remove magic quotes if php.ini/.htaccess are not editable?

【讨论】:

  • 要关闭magic_quotes_gpc,我必须联系我的提供商还是有其他方法可以做到这一点?
  • 我应该使用像here这样的htaccess文件吗?好的,这不起作用(500 内部服务器错误)。
  • 500 错误意味着您必须查看服务器的错误日志以获取某些错误消息。乍一看,这段代码似乎没问题。 php_flag magic_quotes_gpc off。文本的后半部分,带有 ini_set 没有意义。它永远不会起作用。
  • 抱歉,我无权访问服务器日志。我想因此我必须联系我的供应商。尽管如此,我还是在我的提供商的常见问题解答中找到了如何提供自己的 php.ini。我试过了,到目前为止效果很好。 phpinfo() 显示 magic_quotes_gpc 关闭。所以我尝试了我的第一次测试,我也得到了\',但我的表格只有一次。我以为这会被淘汰?
  • 这是我提到的第二种情况,我相信。您正在使用一些添加这些斜杠的功能。
【解决方案2】:

使用 stripslashes 在存储数据之前删除 PHP 对数据的格式。

$text = stripslashes($_POST['data']);

【讨论】:

  • 治标不治本
猜你喜欢
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 2019-11-06
  • 1970-01-01
  • 2014-09-22
  • 2016-12-09
  • 1970-01-01
相关资源
最近更新 更多