`
xieye
  • 浏览: 831431 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

php基础知识(1)-魔术引用

    博客分类:
  • PHP
php 
阅读更多
php基础知识-魔术引用

示例代码下载页http://xieye.iteye.com/blog/1336095(在附件)

魔术引用是指:服务器对一些字符做自动转换,以方便程序员的做法。

来源:最开始,php的设计者为了方便程序员将表单数据添加到数据库,在配置文件中加了一个设置,当选项打开时,魔术引用启用,当选项关闭时,魔术引用不启用。

php.ini大约441行
magic_quotes_gpc = Off
注释是; Magic quotes for incoming GET/POST/Cookie data.
注释表明为on时会对进入服务器的get/post/cookie数据做自动转换。

1)addslashes函数
介绍魔术引用之前,先介绍addslashes函数

该函数返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。

一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。

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

例子 1. addslashes() 示例
http://localhost/command/peixun/magicquote/1.php
<?php
$str = "Is your name O'reilly?";

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


2)测试配置选项magic_quotes_gpc
首先确保magic_quotes_gpc = On,如果是off或0,则需要修改,并重启apache服务器。
http://localhost/command/peixun/magicquote/2.php
<?php

require_once('Public/CommandLine.php');

$isget = ($_SERVER['REQUEST_METHOD'] == 'GET') ? 1 : 0;
if ($isget) {
    $html = <<<longs
<html>    
<body>
  <form method="post">
    请输入字符:<input type="text" name="name1" value=''>
    
  </form>
</body>
</html>    
longs;
    echo $html;
    
} else {
    echo $_POST['name1'];
    
}

然后修改magic_quotes_gpc = Off,并重启apache服务器,再次测试程序。

最后要说明的是,这些都是学习概念用的,实际的大部分应用中,都将魔术引用关闭,手动的进行转换。




分享到:
评论

相关推荐

    PHP and MySQL 24-Hour Trainer

    #### 一、PHP基础 **1. 设置工作环境(LESSON1)** - **知识点概述:** 本章节将介绍如何搭建PHP开发环境,包括安装服务器软件(如Apache或Nginx)、PHP解释器以及配置基本的开发工具。 - **详细知识点:** - **...

    基础知识点总结一PPT课件.pptx

    【PHP基础知识点详解】 PHP是一种广泛使用的开源脚本语言,主要应用于Web开发,可以嵌入HTML中。以下是对PPT课件中提到的PHP基础知识的详细解读: 1. **PHP标记**: PHP代码通常使用以下四种方式标记: - `&lt;?php...

    PHP基础笔记pdf

    ### PHP基础知识点详解 #### 一、PHP简介与特点 **PHP**(Hypertext Preprocessor,即“超文本预处理器”),是一种广泛使用的开源通用脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法吸收了C语言、Java和...

    php面试题(普通PHP程序员笔试题,普通PHP程序员面试题)

    1. **PHP基础知识**: - PHP的数据类型:了解如何声明和使用字符串、整型、浮点型、布尔型、数组、对象、NULL以及资源。 - 变量作用域:理解局部变量、全局变量和静态变量的区别及其在代码中的应用。 - PHP运算符...

    PHP开发基础培训课件

    总的来说,PHP开发基础涵盖了从变量操作到面向对象编程的多个核心概念,对于初学者来说,掌握这些基础知识是成为合格的PHP开发者的第一步。通过深入学习和实践,可以进一步提升在Web开发中的技能和效率。

    PHP经典面试题全集

    1. **PHP基础** - 数据类型:了解PHP中的基本数据类型,如整型、浮点型、字符串、布尔型、数组、对象、NULL和资源。 - 变量:理解变量的声明、赋值和作用域(全局、局部、静态)。 - 运算符:掌握算术、比较、...

    php知识

    以上就是PHP基础知识的概述。在深入学习过程中,你还会接触到更多的高级特性,如面向对象编程、命名空间、类和对象、魔术方法、 Traits、错误处理策略以及性能优化等。通过不断实践和学习,你将能够熟练掌握PHP,为...

    腾讯开发PHP基础培训教程

    腾讯推出的PHP基础培训教程旨在帮助初学者或开发者系统地掌握PHP编程基础。下面将详细阐述教程中的关键知识点: 1. **变量与常量**: - 变量:在PHP中,变量以$开头,例如`$val`。变量可以是全局、局部或静态的。...

    PHP基础,基本语法以及注意事项

    "PHP基础知识点总结" PHP 是一种服务器端的 html 脚本编程语言,具有简单、面向对象、解释型、健壮、安全、性能高等特点。它广泛用于 Open source 的 web 开发,并且可以嵌入到 html 中。 PHP 的用法接近 C、Java ...

    PHP程序员面试宝典 笔试 (PHP版).zip

    首先,让我们深入探讨PHP的基础知识,这是任何PHP面试的起点。PHP是一种服务器端脚本语言,主要应用于Web开发,可以嵌入到HTML中使用。其语法简洁,功能强大,是初学者入门的理想选择。了解PHP的数据类型(如字符串...

    腾讯网PHP开发基础培训

    腾讯网的PHP开发基础培训涵盖了PHP编程语言的关键概念和语法,...通过以上介绍,我们可以看到腾讯网的PHP开发基础培训课程旨在为初学者提供全面的PHP语言基础知识,涵盖从基本的变量和函数到面向对象编程的核心概念。

    细说PHP第二版高洛峰.7z

    总之,《细说PHP第二版》是一本全面覆盖PHP基础知识和进阶概念的教程,无论你是刚接触PHP的新手还是希望巩固基础的学习者,都能从中受益匪浅。书中的实例和详细解释将帮助你轻松理解PHP编程,为后续的PHP开发工作...

    PHP程序员面试题A类含答案.zip

    总的来说,这份资料是PHP初学者和准备面试者的重要参考资料,它强化了对PHP基础知识的理解,同时为实际工作中的问题解决提供了基础。通过深入学习和实践这些题目,面试者将能更自信地面对PHP程序员的面试挑战。

    PHP5中文手册,PHP5中文帮助文档

    中文手册详尽地介绍了这些基础知识,帮助初学者快速入门。 **2. 数据类型** PHP5引入了对象和引用的概念,以及弱类型的特性。除了传统的字符串、整型、浮点型、布尔型和数组外,还增加了对象、资源和NULL等类型。...

    总结一些PHP中好用但又容易忽略的小知识

    1. **判断函数是否存在**: 在PHP中,我们常常需要确保要调用的函数确实已经被定义。为此,可以使用`function_exists`函数来检查。例如: ```php function myFunction() {} if (function_exists('myFunction')) ...

    PHP面试大全

    1. **PHP基础**: - 数据类型:理解PHP的内置数据类型,如字符串、整型、浮点型、布尔型、数组、对象、NULL和资源。 - 变量与作用域:了解变量的声明、赋值、生命周期以及不同作用域(global、local、static、$...

    PHP面试题,程序员面试参考资料

    1. **PHP基础** - 变量:理解PHP变量的声明、类型(如int, string, array, object等)及其动态类型特性。 - 运算符:包括算术、比较、逻辑和赋值运算符的使用。 - 流程控制:掌握if...else, switch...case, for, ...

    PHP技术参考手册.docx

    #### 二、PHP基础知识 - **数学函数**: 包括但不限于`abs()`, `ceil()`, `floor()`, `round()`等。 - **字符串函数**: 如`strlen()`, `str_replace()`, `substr()`等。 - **常用函数总结**: 涵盖180多个常用函数,...

    PHP从入门到精通第二版(PDF)

    2. PHP基础语法:涵盖变量、数据类型、运算符、流程控制(循环和条件语句)、函数等基础知识。 3. PHP数组和字符串操作:数组的创建、遍历、操作等;字符串的处理方法,如连接、分割、替换等。 4. PHP面向对象编程:...

Global site tag (gtag.js) - Google Analytics