`
happmaoo
  • 浏览: 4472297 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

魔术引用和函数addslashes()的微妙关系

阅读更多

注明:下面的数据均是指通过Get/Post/Cookies获得的!

  1.

  条件: magic_quotes_gpc=off

  写入数据库的字符串未经过任何过滤处理。从数据库读出的字符串也未作任何处理。

  数据: $data="snow''''sun" ; (snow和sun之间是四个连续的单引号).

  操作: 将字符串:"snow''''sun" 写入数据库,

  结果: 出现sql语句错误,mysql不能顺利完成sql语句,写入数据库失败。

  数据库保存格式:无数据。

  输出数据格式:无数据。

  说明: 对于未经处理的单引号在写入数据库时会使sql语句发生错误。

  2.

  条件: magic_quotes_gpc=off

  写入数据库的字符串经过函数addlashes()处理。从数据库读出的字符串未作任何处理。

  数据: $data="snow''''sun" ; (snow和sun之间是四个连续的单引号).

  操作: 将字符串:"snow''''sun" 写入数据库,

  结果: sql语句顺利执行,数据成功写入数据库

  数据库保存格式:snow''''sun (和输入一样)

  输出数据格式:snow''''sun (和输入一样)

  说明: addslashes()函数将单引号转换为'的转义字符使sql语句成功执行,

  但'并未作为数据存入数据库,数据库保存的是snow''''sun 而并不是我们想象的snow''''sun

  3.

  条件: magic_quotes_gpc=on

  写入数据库的字符串未经过任何处理。从数据库读出的字符串未作任何处理。

  数据: $data="snow''''sun" ; (snow和sun之间是四个连续的单引号).

  操作: 将字符串:"snow''''sun" 写入数据库,

  结果: sql语句顺利执行,数据成功写入数据库

  数据库保存格式:snow''''sun (和输入一样)

  输出数据格式:snow''''sun (和输入一样)

  说明: magic_quotes_gpc=on 将单引号转换为'的转义字符使sql语句成功执行,

  但'并未作为数据入数据库,数据库保存的是snow''''sun而并不是我们想象的snow''''sun。

  4.

  条件: magic_quotes_gpc=on

  写入数据库的字符串经过函数addlashes()处理。从数据库读出的字符串未作任何处理。

  数据: $data="snow''''sun" ; (snow和sun之间是四个连续的单引号).

  操作: 将字符串:"snow''''sun" 写入数据库,

  结果: sql语句顺利执行,数据成功写入数据库

  数据库保存格式:snow''''sun (添加了转义字符)

  输出数据格式:snow''''sun (添加了转义字符)

  说明: magic_quotes_gpc=on 将单引号转换为'的转义字符使sql语句成功执行,

  addslashes又将即将写入数据库的单引号转换为',后者的转换被作为数据写入

  数据库,数据库保存的是snow''''sun

  总结如下:

  1. 对于magic_quotes_gpc=on的情况,

  我们可以不对输入和输出数据库的字符串数据作

  addslashes()和stripslashes()的操作,数据也会正常显示。

  如果此时你对输入的数据作了addslashes()处理,

  那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。

  2. 对于magic_quotes_gpc=off 的情况

  必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出

  因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。

  补充:

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

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

<!-- 分页 --><!-- 分页end -->
分享到:
评论

相关推荐

    PHP函数addslashes和mysql_real_escape_string的区别

    首先,addslashes()函数主要用于对字符串中的特殊字符进行转义,包括单引号(')、双引号(")、反斜杠(\)和NULL字节(\x00)。这个函数的使用简单且广泛,但是它有一个关键的限制:它不知道数据库的字符编码设置。由于这...

    php 反斜杠处理函数addslashes()和stripslashes()实例详解

    在PHP编程语言中,`addslashes()`和`stripslashes()`是两个用于处理字符串中特殊字符的函数,特别是在处理数据库查询、用户输入数据或者需要转义的文本时,这两个函数非常有用。 首先,我们来详细了解`addslashes()...

    php中addslashes函数与sql防注入

    `addslashes`函数的定义和用法如下: ```php addslashes(string $str): string ``` 这个函数的主要作用是在单引号(')、双引号(")、反斜杠(\)以及NULL字符前添加反斜杠。这样,当字符串作为SQL查询的一部分时...

    PHP addslashes()函数讲解

    addslashes() 函数返回在预定义的字符前添加反斜杠的字符串。 预定义字符是: 单引号(’) 双引号(”) 反斜杠(\) NULL 提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备合适的字符串。 ...

    解析php addslashes()与addclashes()函数的区别和比较

    - stripcslashes()和stripslashes()函数分别与addcslashes()和addslashes()函数对应,用于移除反斜杠。 了解这些知识对于处理PHP中的字符串转义和安全问题至关重要,特别是在构建Web应用程序时,如何正确地处理用户...

    支持数组的ADDSLASHES的php函数

    ### 支持数组的ADDSLASHES的PHP函数详解 #### 概述 ...其中一种常见的方法是使用`addslashes`函数。然而,当需要处理的数据结构为数组时,...在实际项目开发过程中,合理利用此类函数可以有效提升代码的安全性和健壮性。

    PHP中使用addslashes函数转义的安全性原理分析

    `addslashes`函数就是一种常见的用于增加数据安全性的方式,它可以帮助预防SQL注入攻击。本文将深入探讨`addslashes`函数的工作原理以及其在安全性方面的应用。 `addslashes`函数在PHP中用于在字符串中添加反斜杠...

    php addslashes 函数详细分析说明

    总之,了解并正确使用addslashes函数对于保证PHP应用中数据的安全传输和存储至关重要,特别是在与数据库交互时,必须考虑到不同服务器配置和使用场景,合理选择是否手动转义字符串或使用其他机制来确保数据安全。

    php中使用addslashes函数报错问题的解决方法

    首先,`addslashes()` 函数用于在字符串中的特定字符前添加反斜杠(\),这些字符包括单引号(')、双引号(")、反斜杠(\)和 NULL。这个函数常用于在插入数据库前对用户输入的数据进行预处理,防止SQL注入攻击。...

    Php函数速查表

    `bin2hex()`, `BinDec()`, `base_convert()`, `DecBin()`, `DecHex()`, `DecOct()`等函数用于不同进制间的数字转换,以及二进制、十六进制和八进制字符串与十进制数字之间的转换。 #### 数学函数 `ceil()`用于向上...

    PHP函数清单.pdf

    其他函数如Abs(取绝对值)、AddSlashes(字符串转义)和Apache_Lookup_URI(处理Apache请求URI)分别用于数学运算、字符串安全和服务器交互。 此外,PHP的数组函数如array()用于创建数组,array_walk()遍历数组,...

    ECSHOP常用函数详解

    21. `addslashes_deep()` 和 `addslashes_deep_obj()`:这两个函数用于递归地为特殊字符添加反斜杠,防止SQL注入。 22. `stripslashes_deep()`:与上述函数相反,用于去除特殊字符的转义。 23. `make_semiangle()`...

    php函数大全(涵盖了php所有的函数)

    ### PHP函数大全解析 在PHP开发中,熟练掌握并运用各种内置函数是提升代码效率与质量的关键。以下是对部分PHP函数的深入解析,这些函数覆盖了...在实际开发中,根据具体需求选择合适的函数,将使程序更加健壮和高效。

Global site tag (gtag.js) - Google Analytics