PHP中magic

   昨天浏览线上项目,发现了一个问题:部分文本输出中的引号前多了一道反斜杠,比如:

  引号内容多了"反斜杠"

  单从页面展现的结果来看,猜测应该是PHP中的magic_quotes_gpc配置被开启了的原因。然后检查了下程序,发现在入口文件中,已经动态关闭了这个配置:

  ini_set('magic_quotes_gpc', 'Off');

  为什么没有生效呢?

  经过一番查找,同事帮忙找到了原因,原来是因为在我动态修改这个配置之前,请求已经被解析了,因此该修改并未针对当次请求生效。

  详见如下网页,有一位同行也遇到了相同的问题:

  https://bugs.php.net/bug.php?id=32867

  magic_quotes_gpc is applied while parsing the request before your PHP script gets control so while you can change this setting in your script, it won't have any effect.

  鉴于服务器上存在多个项目,为了不影响其他项目,我们也不能直接修改php.ini的配置,因此采用了陌路vs追忆编写的代码,递归处理gpc内容:

  if (ini_get('magic_quotes_gpc')) {

  function stripslashesRecursive(array $array)

  {

  foreach ($array as $k => $v) {

  if (is_string($v)) {

  $array[$k] = stripslashes($v);

  } else if (is_array($v)) {

  $array[$k] = stripslashesRecursive($v);

  }

  }

  return $array;

  }

  $_GET = stripslashesRecursive($_GET);

  $_POST = stripslashesRecursive($_POST);

  }

时间: 2024-07-29 12:34:48

PHP中magic的相关文章

怡海软件:CRM软件 排行榜前5名!

随着CRM软件的快速发展.其功能和用户体验日见其新,便捷性和业务交互能力也越来越强,国外有Salesforce. Microsoft Dynamics CRM.SAP等CRM厂商巨头争相渗透,国内CRM软件供应商同样竞争激烈.以下是怡海软件列举的从国际到国内比较公认的TOP5 CRM软件: 1.Salesforce Salesforce CRM以传统软件终结者的形象出现在大众的面前,随着现在2B市场的大热越来越多的被当做一个国外对标案例被提及,但是其实这家企业已经发展了20余年.Salesfor

Apache001_ 模块介绍

Apache概述 Apache是目前世界上使用最为广泛的一种Web Server,它以跨平台.高效和稳定而闻名.按照去年官方统计的数据,Apache服务器的装机量占该市场60%以上的份额.尤其是在X(Unix/Linux)平台上,Apache是最常见的选择.其它的Web Server产品,比如IIS,只能运行在Windows平台上,是基于微软.Net架构技术的不二选择. Apache支持许多特性,大部分通过模块扩展实现.常见的模块包括mod_auth(权限验证).mod_ssl(SSL和TLS支

几款国外主流CRM软件选购指南

不久之前,一位IT分析师发表文章称赞Salesforce.com 的SaaS(软件即服务)软件产品的易用性非常好,而SAP的预置型(On Premise)产品要比它的SaaS版本性能更好.本文对市场上主要的客户关系管理(CRM)软件做一个对比,以帮助用户选择适合自己的产品. 移动性和软件即服务正在不断改变着客户关系管理和销售队伍(Sale Force)的软件.Salesforce.com是CRM领域的新贵,该公司迅速崛起并且逐渐成长为该领域一股非常巨大的力量,而传统的授权软件制造商也看到了CRM

PHP类中的魔术方法(Magic Method)简明总结_php实例

1. __construct()和__destruct() 在实例被 创建/销毁 的时候被调用,都可以传递0个或多个参数. class A { function A() { echo "build A"; } function __destruct() { echo "destroy A"; } } $obj = new A(); //unset($obj); Note:The destructor method will be called as soon as

PHP中的Magic Methods (魔术函数)

  下面我将对PHP所有的魔术方法进行介绍说明.其实下面的大多数方法,对于一个合格的PHP程序员来说,都是很熟悉的东西了.我在这里作个总结,自己作个记录学习,同时也给还未熟悉这些方法的同学们做个介绍.如有疏漏和错误,希望各位能指出.下面所提到的,大多数是PHP5所增加的魔术方法,少部分在PHP4里就已经存在,少部分则是PHP5.1.0之后才出现的,这个在下面我将会提到. __construct()和__destruct() 构造函数__construct()和析构函数__destruct(),这

OS X 10.11.1测试版中现身 Magic Mouse 2 等新外设

根据 Consomac 网站的发现,OS X 10.11.1 El Capitan 测试版中的蓝牙设置文件中出现了三款全新的外设产品,全是 Magic 品牌下的外设.这些新产品包括 Magic Trackpad 2(第二代无线触控板).Magic Mouse 2 (第二代多点触控鼠标)和 Magic Keyboard(第二代无线键盘).对于 Magic Keyboard 和 Magic Mouse 2,我们已经在今年8月的 FCC 文件中发现,而 Magic Trackpad 2 却是首次曝光.

虚拟机中安装苹果操作系统图文教程

  一,虚拟机安装 1. 使用 Partition Magic 給 OS X分区提供空间至少6G): 打开 partition Magic 缩小在扩展分区前面的分区.选定后点击 'Resize/Move Partition 把分区調小6GB以上,点击OK 点击 'Apply' (可能需要重新启动) 关闭 Partition Magic 2. 点击 开始 > 运行-后在命令栏里面输入 cmd 3. 然后输入 Diskpart ,敲击回车后依次输入下列命令: list disk (显示硬盘号) se

C/C++中一个简单的enum手法(idiom)

今天写程序的时候,又用到这个idiom了,于是顺便贴出来.这个idiom蛮简单的,估计很 多人都用过.今天主要是贴出来给新手参考(老手们就甭费时看此帖了). 为了说明这个手法具体该咋用,咱举一个简单的例子来说事儿.比方说要开发一个网络程 序,其中需要统计各种网络协议的数据包数量. ★版本1 假设一开始只需要处理HTTP和FTP两种协议.有些同学不假思索,立即会声明如下两个整 数用于统计: int nCntHttp = 0; int nCntFtp = 0; 猛一看,似乎没啥问题.但是,如果需求发

关于php.ini的中译

虽然这个论坛没有php论坛可是作为一种不错的语言我还是决定把他转过来 php.ini中文解释 [PHP]; PHP还是一个不断发展的工具,其功能还在不断地删减; 而php.ini的设置更改可以反映出相当的变化,; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;;;;;;;;;;;;;; 关于这个文件 ;;;;;;;;;;;;;;;;;;;; ; 这个文件控制了PHP许多方面的观点.为了让PHP读取这个文件,它必须被命名为 ; 'php.ini'.PHP 将在这些地方依次