【问题标题】:Escaping problem逃避问题
【发布时间】:2011-06-05 07:23:34
【问题描述】:

我在 GET 请求中发送此字符串

{"foo":[{"bo1":"*","bob":"*"}]}

但在 PHP 中获取它为

{\"foo\":[{\"bo1\":\"*\",\"bob\":"\*\"}]}

如何以{"foo":[{"bo1":"*","bob":"*"}]} 将其作为查询字符串的一部分发送(或者如何通过 GET 方法发送以正确获取它)? (注意:我无法清理它,因为我无法控制服务器端。)

【问题讨论】:

    标签: php json http urlencode


    【解决方案1】:

    禁用magic_quotes:已弃用。如果不能,您可以随时在输入上使用stripslashes

    $goodStr = stripslashes($_GET['badStr']);
    

    【讨论】:

      【解决方案2】:

      您的 php 配置已启用 ma​​gic_quotes_gpc,这会导致所有 _GET、_POST 和 _COOKIE 超全局变量中的引号和双引号自动转义。

      如果不需要,请将其关闭。如果你这样做了,那么你可能应该重写依赖于这种行为的代码,因为它已被贬值,并将在未来的 php 版本中被删除。

      如果可能的话,你应该在 php.ini 中关闭它。

      无论如何,如果您由于某些原因无法关闭它,只需使用 stripslashes($your_json);

      【讨论】:

        【解决方案3】:

        如果服务器在 Apache 上运行,请在站点根目录中创建一个名为 .htaccess 的文件(前导句点是文件名的一部分)。将以下代码放入文件中:

        php_flag magic_quotes_gpc Off
        

        否则,您每次都需要使用 stripslashes()。

        【讨论】:

          猜你喜欢
          • 2020-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-12
          • 2019-12-06
          • 2011-03-10
          • 1970-01-01
          • 2018-06-14
          相关资源
          最近更新 更多