PHP提供两个方便我们引用数据的魔法引用函数magic_quotes_gpc和magic_quotes_runtime,这两个函数如果在php.ini设置为ON的时候,就会为我们引用的数据碰到 单引号' 和 双引号" 以及 反斜线 时自动加上反斜线,帮我们自动转译符号,确保数据操作的正确运行 **PHP daddslashes 使用方法** 在PHP中,`daddslashes`函数是一个用户自定义的辅助函数,用于处理字符串中的特殊字符,特别是那些可能影响数据库操作的字符。它与内置的`addslashes`函数相似,但增加了递归处理数组的能力。`addslashes`函数会在字符串中的单引号(')、双引号(")和反斜线(\)前添加反斜线,以确保数据在插入到数据库或进行其他操作时能够正确地转义。 在PHP的早期版本中,有两个名为`magic_quotes_gpc`和`magic_quotes_runtime`的魔法引用函数。如果它们在`php.ini`配置文件中被设置为`ON`,则系统会自动对来自客户端的数据(如GET、POST、COOKIES)进行转义。然而,这些功能在PHP 5.4版本后被废弃,并在PHP 7中完全移除。因此,现在使用`daddslashes`或其他手动转义方法变得更为常见。 **实例代码分析** 以下是一个使用`daddslashes`的例子: ```php @set_magic_quotes_runtime(0); $MQG = get_magic_quotes_gpc(); if(!$MQG && $_POST) $_POST = daddslashes($_POST); if(!$MQG && $_GET) $_GET = daddslashes($_GET); // 转译字符函数 function daddslashes($string) { if(!is_array($string)) return addslashes($string); foreach($string as $key => $val) $string[$key] = daddslashes($val); return $string; } ``` 这段代码首先关闭了`magic_quotes_runtime`,然后检查`magic_quotes_gpc`是否开启。如果未开启,它会对`$_POST`和`$_GET`数组中的所有数据应用`daddslashes`函数,以确保数据安全。 **magic_quotes_gpc 和 magic_quotes_runtime 区别** `magic_quotes_gpc`和`magic_quotes_runtime`的主要区别在于它们的作用范围和时机: - `magic_quotes_gpc`:作用于web客户端的数据,比如GET、POST和COOKIE数据,会在请求开始时自动进行转义。 - `magic_quotes_runtime`:作用于从文件或数据库查询中获取的数据,会在脚本运行期间每次访问这些数据时进行转义。 这意味着`magic_quotes_gpc`影响的是用户提交的输入,而`magic_quotes_runtime`则针对程序运行过程中处理的数据。 **相关函数** - `set_magic_quotes_runtime()`:用于设置`magic_quotes_runtime`的状态,但请注意,此函数在PHP 5.3.0版本后已被废弃。 - `get_magic_quotes_gpc()`:检查`magic_quotes_gpc`当前的设置状态。 - `get_magic_quotes_runtime()`:检查`magic_quotes_runtime`当前的设置状态。 由于`set_magic_quotes_gpc()`不存在,这意味着无法在运行时更改`magic_quotes_gpc`的设置,必须在`php.ini`中进行修改。 **总结** 在PHP开发中,虽然`magic_quotes_gpc`和`magic_quotes_runtime`已经过时,但理解它们的工作原理仍然很重要,因为旧的代码库可能仍依赖这些功能。`daddslashes`这样的函数成为了确保数据安全转义的一种替代方案,特别是在处理用户输入和文件数据时。在现代PHP开发中,更推荐使用`mysqli_real_escape_string`或`PDO`的预处理语句来处理数据库操作,以防止SQL注入等安全问题。
- 粉丝: 6
- 资源: 944
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助