`

关闭php.ini 魔法引用 _转转转

    博客分类:
  • php
阅读更多

PHP魔术引号是在编程过程中必须注意的,否则会带来灾难性的麻烦,汗,今天就有客户找我了,我排查错误半天,发现是PHP魔术引号在作怪!真是很 郁闷的一件事,我就纳闷儿了,PHP默认魔术引号是关闭的,那个破网管闲的没事,给打开了!后来,偶找到他,他还给偶谈一些什么SQL注入的大道理,唉, 真是无语!!

PHP的魔术引号给程序编写带来了一丁点方便,但却严重影响的程序的可移植性,在开启magic_quotes_gpc的环境下写的程序到没开启的环境下就有可能出现错误。所以通常情况下,我们会关闭magic_quotes_gpc以避免它带来的问题。

手册里介绍了三种方法,在些整理一下:

1 修改PHP配置文件php.ini

这种方法只适于自己有权管理服务器的情况下,如果用的虚拟空间,那就只能采用后两条方法。

在PHP配置文件php.ini中将magic_quotes_gpc、magic_quotes_runtime、magic_quotes_sybase全部设为off。如下所示:

; Magic quotes

;

; Magic quotes for incoming GET/POST /Cookie data.

magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.

magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ‘ with ” instead of ’).

magic_quotes_sybase = Off

2 利用.htaccess文件

该方法只在服务器支持htaccess的情况下,现在的服务器一般都会支持的

在程序目录下.htaccess文件中增加下面一句:

php_flag magic_quotes_gpc Off

3 在代码中屏蔽

该方法是移植性最强的,不用考虑服务器的配置,只要支持PHP就可以使用。

在所有PHP文件开始处增加下面代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php 
if (get_magic_quotes_gpc()) { 
function stripslashes_deep($value) 
{ 
$value = is_array($value) ? 
array_map('stripslashes_deep', $value) : 
stripslashes($value); 
 
return $value; 
} 
 
$_POST = array_map('stripslashes_deep', $_POST); 
$_GET = array_map('stripslashes_deep', $_GET); 
$_COOKIE = array_map('stripslashes_deep', $_COOKIE); 
$_REQUEST = array_map('stripslashes_deep', $_REQUEST); 
} 
?>

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

分享到:
评论

相关推荐

    php思维导图.rar

    安装过程涉及配置文件(php.ini)的修改,以设置PHP的运行时行为。 10. **datatype.png - 数据类型** PHP支持多种数据类型,包括整型、浮点型、字符串、数组、对象、布尔型、NULL以及资源。这张图可能展示了这些...

    php_imagick

    - 配置php.ini文件,启用Imagick扩展,添加`extension=imagick.so`(Windows环境下可能是`extension=php_imagick.dll`)。 3. **基本使用** - 创建`Imagick`对象,读取图像:`$im = new Imagick('image.jpg');` ...

    2016阿里校招PHP笔试 完整截图

    - 魔法方法:如`__construct()`, `__destruct()`, `__get()`, `__set()`, `__call()`, `__toString()`等。 7. **数据库操作** - PDO或MySQLi接口:用于连接和查询MySQL数据库,掌握SQL语句的基本用法。 - 数据库...

    PHP 手册

    - 错误处理:通过设置error_reporting()和ini_set()控制错误报告级别。 - 日志记录:可以使用error_log()函数将错误信息写入日志文件或通过其他方式发送。 8. **会话管理** - session_start()启动会话,$_...

    php代码-xiaobaitao

    - 错误报告:通过`error_reporting()`和`ini_set('display_errors', 'On')`开启错误显示。 - 异常处理:通过`try...catch`块来捕获和处理异常。 8. **面向对象编程** - 类:`class ClassName {...}`。 - 对象:...

    prog_III:Programacion 3

    为了编写高效、安全的PHP代码,开发者应遵循最佳实践,如使用命名空间,避免魔法变量,使用预处理语句防止SQL注入,使用`htmlspecialchars()`防止XSS攻击,以及定期更新PHP版本以获取最新安全修复。 13. **部署与...

    网管教程 从入门到精通软件篇.txt

     bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。  含有下列参数的 bootcfg 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。  用法:  ...

Global site tag (gtag.js) - Google Analytics