`
yushine
  • 浏览: 200585 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

set_magic_quotes_runtime(0)函数作用解释

    博客分类:
  • PHP
阅读更多
    set_magic_quotes_runtime(0);

    可以修改php.ini中 magic_quotes_runtime boolean的设置

    当你的数据中有一些
    \
    "
    '
    这样的字符要写入到数据库里面,又想不被过滤掉的时候,它就很有用,会在这些字符前加上\

    中国\地大物博"哈哈"

    中国\\地大物博\"哈哈\"


    set_magic_quotes_runtime是用来设置PHP 环境配置的变量 magic_quotes_runtime 值。
    0-关闭 1-打开

    程序中检测状态用get_magic_quotes_runtime,返回 0 表示关闭本功能;返回 1 表示本功能打开。若 magic_quotes_runtime 打开时,所有外部引入的数据库资料或者文件等等都会自动转为含有反斜线溢出字符的资料。

在php.ini的配置文件中,有个布尔值的设置,就是magic_quotes_runtime,当它打开时,php的大部分函数自动的给从外部引入的 (包括数据库或者文件)数据中的溢出字符加上反斜线。

当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就要用set_magic_quotes_runtime()与 get_magic_quotes_runtime()设置和检测php.ini文件中magic_quotes_runtime状态。

为了使自己的程序不管服务器是什么设置都能正常执行。可以在程序开始用get_magic_quotes_runtime检测设置状态秋决定是否要手工处理,或者在开始(或不需要自动转义的时候)用set_magic_quotes_runtime(0)关掉。

magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的'"\加上反斜线。可以用 get_magic_quotes_gpc()检测系统设置。如果没有打开这项设置,可以使用addslashes()函数添加,它的功能就是给数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。

回复 引用

订阅 TO



魔法引用函数magic_quotes_gpc和magic_quotes_runtime的区别和用法
PHP提供两个方便我们引用数据的魔法引用函数 magic_quotes_gpc和magic_quotes_runtime,这两个函数如果在php.ini设置为ON的时候,就会为我们引用的数据碰到 单引号' 和 双引号" 以及 反斜线\ 时自动加上反斜线,帮我们自动转译符号,确保数据操作的正确运行,可是我们在php不同的版本或者不同的服务器配置下,有的 magic_quotes_gpc和magic_quotes_runtime设置为on,有的又是off,所以我们写的程序必须符合on和off两种情况。那么magic_quotes_gpc和magic_quotes_runtime两个函数有什么区别呢?看下面的说明:

magic_quotes_gpc
作用范围是:WEB客户服务端;
作用时间:请求开始是,例如当脚本运行时。

magic_quotes_runtime
作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的;
作用时间:每次当脚本访问运行状态中产生的数据。

所以

magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据
例子说明:
$data1 = $_POST['aaa'];
$data2 = implode(file('1.txt'));
if(get_magic_quotes_gpc()){
   //把数据$data1直接写入数据库 (自动转译)
}else{
   $data1 = addslashes($data1);
   //把数据$data1写入数据库,用函数(addslashes()转译)
}
if(get_magic_quotes_runtime()){
   //把数据$data2直接写入数据库(自动转译)
//从数据库读出的数据要经过一次stripslashes()之后输出stripslashes()的作用是去掉:\ ,和addslashes()作用相反
}else{
   $data2 = addslashes($data2);
    //把数据$data2写入数据库


//从数据库读出的数据直接输出
}
最关键的区别是就是上面提到的2点:他们针对的处理对象不同
magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据
在这里顺便在提几个想关联的函数:


set_magic_quotes_runtime():
设置magic_quotes_runtime值. 0=关闭.1=打开.默认状态是关闭的.可以通过 echo phpinfo(); 查看magic_quotes_runtime
get_magic_quotes_gpc():
查看magic_quotes_gpc值.0=关闭.1=打开

get_magic_quotes_runtime():
查看magic_quotes_runtime值。0=关闭.1=打开.
注意的是没有 set_magic_quotes_gpc()这个函数,就是不能在程序里面设置magic_quotes_gpc的值。
分享到:
评论

相关推荐

    php set_magic_quotes_runtime() 函数过时解决方法

    标题中提到的“php set_magic_quotes_runtime() 函数过时解决方法”指出,在PHP中,`set_magic_quotes_runtime()` 函数由于不再被支持,需要寻找替代方案来处理运行时魔术引号的设置。在PHP的历史版本中,这个函数...

    基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍

    可以使用set_magic_quotes_runtime()函数来控制magic_quotes_runtime的状态,设置为1表示开启,设置为0表示关闭。需要注意的是,magic_quotes_runtime在关闭状态下,从文件或数据库中读取的数据不会被自动转义,可能...

    PHP的特殊字符转译函数使用.pdf

    如果服务器的magic_quotes_gpc设置为关闭,可以在必要时使用set_magic_quotes_runtime(0)关闭自动转义功能。 重要的是要注意,在PHP6中已经移除了magic_quotes_gpc选项,这意味着所有的编程都需要在magic_quotes_...

    php关于反斜杠转义字符.docx

    `set_magic_quotes_runtime(int new_setting)`函数则用于设置此功能的开关状态,参数new_setting为0时关闭,1时打开。 魔术引号在PHP中的应用主要是为了增加安全性,避免SQL注入等问题,但有时也会带来不便,比如当...

    php常用的安全过滤函数集锦

    相反,magic_quotes_runtime则可以在脚本运行时通过ini_set()函数进行配置。 在实际应用中,当检测到php.ini配置文件中开启了magic_quotes_gpc和magic_quotes_runtime时,就可以放心地使用这些指令进行数据过滤。若...

    PHP daddslashes 使用方法介绍

    @set_magic_quotes_runtime(0); $MQG = get_magic_quotes_gpc(); if(!$MQG && $_POST) $_POST = daddslashes($_POST); if(!$MQG && $_GET) $_GET = daddslashes($_GET); // 转译字符函数 function daddslashes($...

    php关于反斜杠转义字符.pdf

    `set_magic_quotes_runtime`函数接受一个整数值作为参数,0表示关闭,1表示打开。关闭魔术引号可以避免因不必要的转义导致的数据处理问题,尤其是当你需要使用正则表达式(preg_系列函数)时,因为反斜杠在正则...

    PHPCMS整站代码分析讲解.doc

    此外,set_magic_quotes_runtime(0)函数用于关闭字符窜入库自动转意,以提高程序的性能。 在include/common.inc.php文件中,还加载了global.func.php文件,该文件包含了一些程序全局都需要用的函数,例如strip_sql...

    PHP(50选择题).doc

    set_magic_quotes_runtime() 函数用于设置 magic_quotes_runtime 配置选项,而不是修改页面过期时间。 _PHP Cookie_ 8. Cookie 最大长度是?答案:D、4KB。Cookie 的最大长度是 4KB,但这只是一个约定的限制,实际...

    PHP 转义使用详解

    值得注意的是,PHP中并没有提供set_magic_quotes_gpc函数,这意味着我们不能在程序运行时改变magic_quotes_gpc的设置,只能依赖于php.ini配置文件或者通过其他配置方式(如.htaccess)来关闭magic_quotes_gpc。...

    PHPWind 源码解析.docx

    然后,通过 `set_magic_quotes_runtime(0)` 关闭了 `magic_quotes_runtime` 功能,这个选项在处理外部数据时会自动添加反斜杠,以防止 SQL 注入等问题。然而,现代 PHP 开发中,通常推荐使用预处理语句(如 PDO 或 ...

    云引擎AEC安全禁用函数.docx

    - `get_magic_quotes_runtime`, `set_magic_quotes_runtime`: 这些函数处理输入数据的自动引用,禁用可能是为避免不一致的安全策略。 - `getopt`: 解析命令行参数,禁用可能是因为云环境中通常不直接接收命令行...

    php5.3 废弃函数小结

    在php5.3被放弃的函数有: ereg();//直接用mb_ereg代替,或是... set_magic_quotes_runtime(); split(); mysql_close(); // 将不支持全部关闭, 需要改为:mysql_close($link); 您可能感兴趣的文章:Ubuntu12下编译安装

    PHP字符转义相关函数小结(php下的转义字符串)

    由于set_magic_quotes_runtime()函数在PHP5.3.0之后被废弃,因此在使用PHP5.3.0以前的版本时,建议统一配置关闭此选项。此外,由于magic_quotes_gpc不能通过函数来定义,建议在服务器上统一开启,然后在编写程序时...

    DZ代码分析

    set_magic_quotes_runtime(0); ``` `error_reporting(0)`用于关闭所有错误报告,这在生产环境中较为常见,目的是防止敏感信息泄露。`set_magic_quotes_runtime(0)`则禁用了运行时的magic_quotes功能,该功能自动对...

    php常用Output和ptions/Info函数集介绍

    set_magic_quotes_runtime函数用于设置magic_quotes运行时的值。 set_time_limit函数用于设置脚本执行的最大秒数。 dl函数用于在运行时加载PHP扩展模块。 main函数在PHP中是一个特殊的函数,用于启动脚本。 ...

    php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错

    此外,`set_magic_quotes_runtime()`函数在PHP 5.3后也被弃用,该函数用于开启或关闭运行时自动转义字符串的特性。由于安全性和性能考虑,此功能在PHP 5.3中被废弃,并在PHP 6中彻底移除。处理这个错误的方法是不再...

    为你总结一些php系统类函数

    **set_magic_quotes_runtime函数**:设置magic_quotes_runtime运行时标志。 **set_time_limit函数**:设置脚本的最大执行时间。 **dl函数**:用于在运行时动态加载PHP扩展模块。 **main函数**:是一个挂名的函数...

Global site tag (gtag.js) - Google Analytics