【问题标题】:PHP 7.2: HTTP Form Post, something is escaping single quotes with backslashes. Magic Quotes was dropped in 5.x [duplicate]PHP 7.2: HTTP Form Post,用反斜杠转义单引号。 Magic Quotes 在 5.x 中被删除 [重复]
【发布时间】:2018-10-31 20:20:26
【问题描述】:

有人知道我可以在哪里改变这种行为吗?

正如预期的那样,“魔术引号”设置没有任何作用,因为该功能现已消失。但是有些东西正在尝试提供帮助,我不确定是什么。

重现步骤:

  • 在表单上有一个字段
  • 输入带有单引号的内容,例如"Terry's String"
  • 张贴表格
  • $_POST['fieldname']) 现在包含输入的带有单引号的字符串,前面带有 \,例如:Terry\'s String

在 php 配置文件中关闭魔术引号无效。

任何人都知道在哪里寻找或如何解决这个问题?

编辑 `var_dump($_POST['FirstName']);

returns: string(15) "特里的字符串"`

var_dump($_GET['FirstName']);返回

array(1) { ["FirstName"]=> string(8) "Terry\'s" } 当我在 GET 中传递参数时。

来自浏览器的表单帖子显示:FirstName=Terry%27s+String

【问题讨论】:

  • var_dump($_POST['fieldname']); 返回什么?你在使用框架吗?是否有任何安全软件正在运行?
  • @MarkusZeller 这是个坏建议,他应该首先解决添加斜线的问题。
  • 当你有 $_GET 变量时会发生同样的事情吗? (可能更容易消除客户端行为,因为您可以简单地启动 curl 调用或将参数附加到浏览器 url)
  • 您也可以尝试var_dump(file_get_contents('php://input')); 查看未解析的请求正文。这应该告诉您问题在 PHP 处理请求之前或之后是否存在
  • @TerryCarmen 好的,这是一个开始。现在,您完全确定与您的 Web 服务器一起使用的 PHP 版本吗?您可以尝试echo PHP_VERSION; 或尝试旧的phpinfo()(在浏览器中)。有些系统可以安装多个版本。 phpinfo() 还会显示正在使用的配置文件

标签: php wordpress apache


【解决方案1】:

感谢大家,尤其是@Phil,他给我指出了var_dump(file_get_contents('php://input'));

尽管 PHP 7.2 没有 Magic Quotes,WordPress 也有自己的 magic_quotes 实现,并且正在修改 PHP _POST 数据以提供“帮助”。

尽管我正在使用我认为是 PHP 表单发布数据的内容编写纯 PHP 代码,但实际上我得到了一个经过清理的副本。

事实证明,WordPress 存在理智问题,即使 PHP 从语言中删除了该功能,他们也无法决定是否要打开或关闭 Magic Quotes。

#18322. The Road to Magic Quotes Sanity

WordPress and magic quotes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 2020-02-01
    • 2016-03-24
    • 1970-01-01
    • 2016-06-16
    相关资源
    最近更新 更多