• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHPmagic_quotes_gpc的详细使用方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

工作中遇到的代码

if (ini_get('magic_quotes_gpc')) {
function stripslashesRecursive(array $array){
foreach ($array as $k => $v) {
if (is_string($v)){
$array[$k] = stripslashes($v);
} else if (is_array($v)){
$array[$k] = stripslashesRecursive($v);
}
}
return $array;
}

$_GET = stripslashesRecursive($_GET);
$_POST = stripslashesRecursive($_POST);

 

我们今天要向大家介绍的是PHP magic_quotes_gpc的具体使用方法。大家都知道在PHP中一个特殊的函数魔术函数,它在引用的过程中只有在传递$_GET,$_POST,$_COOKIE时才会发生作用。

 

1.
条件: PHP magic_quotes_gpc=off
写入数据库的字符串未经过任何过滤处理。从数据库读出的字符串也未作任何处理。

 

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

操作: 将字符串:”snow”’’sun” 写入数据库,

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

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

输出数据格式:无数据。

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

2.
条件: PHP magic_quotes_gpc=off
写入数据库的字符串经过函数addlashes()处理。从数据库读出的字符串未作任何处理。

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

操作: 将字符串:”snow”’’sun” 写入数据库,

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

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

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

说明: addslashes()函数将单引号转换为\’的转义字符使sql语句成功执行,
但\’并未作为数据存入数据库,数据库保存的是snow”’’sun 而并不是我们想象的snow\’\’\’\’sun

3.
条件: PHP magic_quotes_gpc=on
写入数据库的字符串未经过任何处理。从数据库读出的字符串未作任何处理。

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

操作: 将字符串:”snow”’’sun” 写入数据库,

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

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

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

说明: PHP magic_quotes_gpc=on 将单引号转换为\’的转义字符使sql语句成功执行,
但\’并未作为数据入数据库,数据库保存的是snow”’’sun而并不是我们想象的snow\’\’\’\’sun。

4.
条件: PHP magic_quotes_gpc=on
写入数据库的字符串经过函数addlashes()处理。从数据库读出的字符串未作任何处理。

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

操作: 将字符串:”snow”’’sun” 写入数据库,

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

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

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

说明: PHP magic_quotes_gpc=on 将单引号转换为\’的转义字符使sql语句成功执行,
addslashes又将即将写入数据库的单引号转换为\’,后者的转换被作为数据写入
数据库,数据库保存的是snow\’\’\’\’sun

总结如下:
1. 对于PHP magic_quotes_gpc=on的情况,

我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。

如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。

2. 对于PHP magic_quotes_gpc=off 的情况

必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出
因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。

补充:

PHP magic_quotes_gpc作用范围是:WEB客户服务端;作用时间:请求开始时,例如当脚本运行时.
magic_quotes_runtime 作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的;作用时间:每次当脚本访问运行状态中产生的数据
 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
sublime直接运行php代码发布时间:2022-07-10
下一篇:
php长连接和短连接的使用场景发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap