php中get_magic_quotes_gpc用法介绍

默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

例子

1. addslashes() 示例

 代码如下 复制代码

<?
$str = "Is your name O'reilly?";

// 输出:Is your name O'''reilly?
echo addslashes($str);
?>

返回值

关闭 magic_quotes_gpc 时返回 0,否则是 1。 在 PHP 5.4.O 起将使用返回 FALSE

 代码如下 复制代码

<?php
// 如果启用了魔术引号
echo $_POST['lastname'];             // O'reilly
echo addslashes($_POST['lastname']); // O\'reilly

// 适用各个 PHP 版本的用法
if (get_magic_quotes_gpc()) {
    $lastname = stripslashes($_POST['lastname']);
}
else {
    $lastname = $_POST['lastname'];
}

// 如果使用 MySQL
$lastname = mysql_real_escape_string($lastname);

echo $lastname; // O'reilly
$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
?>

php.ini:get_magic_quotes_gpc

在php的配置文件中,有个布尔值的设置,就是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 字符)。

时间: 2024-12-30 10:19:07

php中get_magic_quotes_gpc用法介绍的相关文章

javascript中函数用法介绍(匿名函数,函数传值,参数)(1/2)

第一课 -- 匿名函数 一.什么是匿名函数? 在Javascript定义一个函数一般有如下三种方式: 1.函数关键字(function)语句:  代码如下 复制代码 function fnMethodName(x){alert(x);} 2.函数字面量(Function Literals): var fnMethodName = function(x){alert(x);} 3.Function()构造函数: var fnMethodName = new Function('x','alert(

JavaScript中setAttribute用法介绍

我们经常需要在JavaScript中给Element动态添加各种属性,这可以通过使用setAttribute()来实现,这就涉及到了浏览器的兼容性问题   setAttribute(string name, string value):增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值. 1.样式问题 setAttribute("class", value)中class是指改变"class"这个属性,所以要带引号. vName代表对样式赋值. 例如:

JAVA中ThreadLocal用法介绍

概述 ThreadLocal看名字好像是一个Thread的实现,其实并不是这样的,ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是线程局部 (thread-local) 变量.这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本.ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联. 线

JavaScript中setAttribute用法介绍_基础知识

setAttribute(string name, string value):增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值.1.样式问题setAttribute("class", value)中class是指改变"class"这个属性,所以要带引号.vName代表对样式赋值.例如: 复制代码 代码如下: var input = document.createElement("input");input.setAttribut

简单分析PHP中序列化用法介绍

0x00 序列化函数 serialize():返回带有变量类型和值的字符串 unserialize():想要将已序列化的字符串变回 PHP 的值 测试代码: <?php   class test{      var $a;      var $b;      function __construct($a,$b,$c){       $a  = $a;       $this->b = $b;          }     }         class test1 extends test{

python中函数用法介绍

 代码如下 复制代码 def sumOf(a, b):     return a + b 1. 函数形参 函数中的参数名称为'形参',调用函数时传递的值为'实参' 2. 局部变量 在函数内定义的变量与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的.这称为变量的作用域. global语句, 为定义在函数外的变量赋值时使用global语句.  代码如下 复制代码 def func():     global x     print "x is ", x     x

smarty模板中html_options用法介绍

先看看html_option函数参数表: 属性 类型 是否必须 缺省值 描述 values array 是,除非使用option属性 n/a 包含下拉列表各元素值的数组 output array 是,除非使用option属性 n/a 包含下拉列表各元素显示值的数组 selected string/array 否 empty 已选定的元素或元素数组 options associative array 是,除非使用value和output n/a 包含值和显示的关联数组 name string 否

Excel2007中网格线的基本用法介绍

Excel2007中网格线的基本用法介绍 Excel2007中的网格线在编辑.打印操作中都会用到.下面讲解Excel2007软件中网格线的一些基本用法. 1.隐藏/显示网格线 通过"视图"选项卡菜单中的"网格线"复选框开关,你可以设置网格线在编辑表时候的显示与否,   2.打印输出网格线设置 Excel中默认的网格线在打印时候是不会输出的,除非你进行了单元格的边框设置.设置方法:"开始"选项卡菜单中"字体"栏的"边框

Python中的with...as用法介绍

  这篇文章主要介绍了Python中的with...as用法介绍,本文直接给出用法实例,需要的朋友可以参考下 这个语法是用来代替传统的try...finally语法的. 代码如下: with EXPRESSION [ as VARIABLE] WITH-BLOCK 基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法. 紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量.当with后面的