我们可以通过以下代码来探测php环境中magic_quotes_runtime是否开启:

magic_runtime.php 源代码如下:

<?php

//当magic_quotes_runtime=On的时候,get_magic_quotes_runtime函数的返回值为1

//当magic_quotes_runtime=Off的时候,get_magic_quotes_runtime函数的返回值为0

if (get_magic_quotes_runtime())

{

echo 'magic_quotes_runtime 开启';

}

else

{

echo 'magic_quotes_runtime 未开启';

}

?>

将magic_ runtime.php 文件放在本地站点根目录之下测试,如图:

那么,说明:我的本地php环境,并没有开启magic_quotes_runtime,即,magic_quote_runtime=Off,或者magic_quote_runtime这个特性在我此时的php环境版本里面,也已经被php社区废除了,那么,我在编写php代码的时候,就需要将magic_quotes_runtime设置为On,或者在php代码中使用addslashes函数对外部引入的数据库资料或者文件中的特殊字符进行转义,不然,此情此景,我编写的php代码也会不安全。

其实,我的本地magic_quotes_runtime默认设置如图:

通过set_magic_quotes_runtime函数,可以修改php.ini中magic_quotes_runtime 布尔值的设置:

0:代表关闭

1:代表打开

比如,Discuz 1.0/Discuz 3.x版本中,Discuz的安装文件的开始部分代码就使用了set_magic_quotes_runtime这个函数,这样,Discuz代码就会更安全了。

Discuz 1.0安装文件部分源代码:

<?php

//-----------------------------------------------------------------------------

//    Discuz! Board 1.0 Standard - Discuz! 中文论坛 (PHP & MySQL) 1.0 标准版

//-----------------------------------------------------------------------------

//    Copyright(C) Dai Zhikang, Crossday Studio, 2002. All rights reserved

//

//    Crossday 工作室 www.crossday.com    *Discuz! 技术支持 www.Discuz.net

//-----------------------------------------------------------------------------

//  请详细阅读 Discuz! 授权协议,查看或使用 Discuz! 的任何部分意味着完全同意

//  协议中的全部条款,请举手之劳支持国内软件事业,严禁一切违反协议的侵权行为.

//-----------------------------------------------------------------------------

// Discuz! 专注于提供高效强大的论坛解决方案,如用于商业用途,您必须购买使用授权!

//-----------------------------------------------------------------------------

error_reporting(7);

set_magic_quotes_runtime(0);

define("IN_CDB", TRUE);

$action = ($HTTP_POST_VARS["action"]) ? $HTTP_POST_VARS["action"] : $HTTP_GET_VARS["action"];

$PHP_SELF = $HTTP_SERVER_VARS["PHP_SELF"];

if (function_exists("set_time_limit") == 1 && @ini_get("safe_mode") == 0) {

@set_time_limit(1000);

}

@require "./config.php";

require "./functions.php";

header("Content-Type: text/html; charset=$charset");

$version = "1.0";

Discuz 3.x安装文件部分源代码:

<?php

/**

*      [Discuz!] (C)2001-2099 Comsenz Inc.

*      This is NOT a freeware, use is subject to license terms

*

*      $Id: index.php 22348 2011-05-04 01:16:02Z monkey $

*/

error_reporting(E_ERROR | E_WARNING | E_PARSE);

@set_time_limit(1000);

@set_magic_quotes_runtime(0);

define('IN_DISCUZ', TRUE);

define('IN_COMSENZ', TRUE);

define('ROOT_PATH', dirname(__FILE__).'/../');

require ROOT_PATH.'./source/discuz_version.php';

require ROOT_PATH.'./install/include/install_var.php';

if(function_exists('mysql_connect')) {

require ROOT_PATH.'./install/include/install_mysql.php';

} else {

require ROOT_PATH.'./install/include/install_mysqli.php';

}

require ROOT_PATH.'./install/include/install_function.php';

require ROOT_PATH.'./install/include/install_lang.php';

$view_off = getgpc('view_off');

总结:

magic_quotes_gpc与magic_quotes_runtime的区别

1、 magic_quotes_runtime是对外部引入的数据库资料或者文件中的特殊字符进行转义,而magic_quotes_gpc是对post、get、cookie等数组传递过来的数据进行特殊字符转义。

2、 他们都有相应的get函数,可以对php环境中是否设置了他们相应功能特性进行探测,如:get_magic_quotes_gpc,是对magic_quotes_gpc是否设置的探测,get_magic_quotes_runtime,是对magic_quotes_runtime是否设置的探测,而且都是如果设置了,get函数返回1,如果没有设置,get函数返回0。

3、 不能在程序里面设置magic_quotes_gpc的值,原因是php中并没有set_magic_quotes_gpc这个函数,而magic_quotes_runtime有对应的能在代码中直接设置magic_quotes_runtime值的函数:set_magic_quotes_runtime,所以,magic_quotes_gpc的值,只能自己手动在php.ini文件里面设置了。

magic_quotes_runtime(魔术引号开关)的更多相关文章

  1. magic_quotes_sybase(魔术引号开关)

    magic_quotes_sybase,如果该选项在php.ini文件中是唯一开启的话,将只会转义%00为\0(即null字符).此选项会完全覆盖magic_quotes_gpc.如果同时开启这两个选 ...

  2. magic_quotes_gpc(魔术引号开关)

    magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post.get.cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊 ...

  3. 什么是PHP魔术引号

    今天在读EcShop的源码中发现里面有几个地方涉及到了PHP魔术引号,之前也碰到过都忽略过去了,再次碰到该深入的理解,虽然自PHP 5.3.0 起魔术引号被废弃废弃并将自 PHP 5.4.0 起移除, ...

  4. PHP 魔术引号

    1.魔术引号的作用是什么? ​ 魔术引号设计的初衷是为了让从数据库或文件中读取数据和从请求中接收参数时,对单引号.双引号.反斜线.NULL加上一个一个反斜线进行转义,这个的作用跟addslashes( ...

  5. PHP之魔术引号

    什么是魔术引号 Warning 本特性已自 PHP5.3.0起废弃并将自PHP5.4.0起移除. 当打开,所有的'(单引号),"(双引号),  (反斜线)和NULL 字符都会被自动加上一个反 ...

  6. WEB安全 魔术引号及注入类型

    一.魔术引号 1. magic_quotes_gpc 变量 什么是魔术引号 Warning本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除.当打开时,所有的 '(单引号),&q ...

  7. char函数绕过魔术引号注入

    我目前学习到的绕过魔术引号的几种方法(如果知道还有别的请万望告之): 1.倘若服务端是GBK可以尝试宽字节注入 2.使用char函数绕过魔术引号进行注入 3.同char函数类似的函数,例如bin(转换 ...

  8. PHP安全设置

    1.register_globals(全局变量注册开关) 2.magic_quotes_gpc(魔术引号开关) 3.magic_quotes_runtime(魔术引号开关) 4.magic_quote ...

  9. PHP的核心配置详解

    1.PHP核心配置详解 代码在不同的环境下执行的结果也会大有不同,可能就因为一个配置问题,导致一个非常高危的漏洞能够利用:也可能你已经找到的一个漏洞就因为你的配置问题,导致你鼓捣很久都无法构造成功的漏 ...

随机推荐

  1. python常用函数之--求绝对值函数:abs(x)

    python中的求绝对值函数:abs(X) 1. 参数 x 可以是整形也可以是复数,假如是复数的话,就求复数的模. >>> # 整形数字 ... >>> a = 1 ...

  2. bzoj 3043: IncDec Sequence 模拟

    3043: IncDec Sequence Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 248  Solved: 139[Submit][Statu ...

  3. 【Xamarin 跨平台机制原理剖析】

    原文:[Xamarin 跨平台机制原理剖析] [看了请推荐,推荐满100后,将发补丁地址] Xamarin项目从喊口号到现在,好几个年头了,在内地没有火起来,原因无非有三,1.授权费贵 2.贵 3.原 ...

  4. 一起啃PRML - 1.2.4 The Gaussian distribution 高斯分布 正态分布

    一起啃PRML - 1.2.4 The Gaussian distribution 高斯分布 正态分布 @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ ...

  5. BZOJ2038小Z的袜子(hose)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2343  Solved: 1077[Subm ...

  6. C#数据库连接字符串

    转自:http://blog.csdn.net/xiaokexinger/article/details/1541441 在MSDN中,.net的数据库连接字符串都有详细的说明,我这里以代码范例的方式 ...

  7. (转载)javascript经典例子

    (转载)http://www.blogjava.net/hadeslee/archive/2007/11/24/161778.html 一.验证类1.数字验证内1.1 整数1.2 大于0的整数 (用于 ...

  8. 数学之美 zt

    数学是美丽的,哪里有数哪里就有美. 数学的定义是研究数量关系和空间形式的一门科学.但有句名言说:数学比科学大得多,因为它是科学的语言.数学不仅用来写科学,而且可用来写人生.所以说数学是一切学科的基础, ...

  9. [转]NHibernate之旅(7):初探NHibernate中的并发控制

    本节内容 什么是并发控制? 悲观并发控制(Pessimistic Concurrency) 乐观并发控制(Optimistic Concurrency) NHibernate支持乐观并发控制 实例分析 ...

  10. OracleHelper[.Net 连接Oracle数据库的封装类]

    using System; using System.Configuration; using System.Data; using System.Data.OracleClient; using S ...