百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> php中什么是魔术引号
分享文章到:

php中什么是魔术引号

发布时间:09/01 来源:未知 浏览: 关键词:

什么是魔术引号:

魔术引号是程序主动将进入PHP足本的数据停止转意的历程。当翻开时,所有的 '(单引号),"(双引号),\(反歪线)和 NULL 字符都会被主动加上一个反歪线停止转义。和 addslashes() 函数的作用完全雷同。

魔术引号指令:

magic_quotes_gpc 影响到 HTTP 恳求数据(GET,POST 和 COOKIE)。不克不及在运转时改动。在 PHP 中默许值为 on。 拜见 get_magic_quotes_gpc()。

magic_quotes_runtime 假如翻开的话,大部份从外部来源取得数据并返回的函数,包罗从数据库和文本文件,所返回的数据都会被反歪线转义。该选项可在运转的时改动,在 PHP 中的默许值为 off。 见 set_magic_quotes_runtime() 和 get_magic_quotes_runtime()。

magic_quotes_sybase 假如翻开的话,将会使用单引号对单引号停止转义而非反歪线。此选项会完全覆盖 magic_quotes_gpc。假如同时翻开两个选项的话,单引号将会被转义成 ''。而双引号、反歪线 和 NULL 字符将不会停止转义。 怎样取得其值拜见 ini_get()。

魔术引号作用:

起初引入魔术引号是平安方面的思考,阻挠SQL注入,它能帮忙php新手在不知不觉中写成相对更平安的代码,不外在今天,程序员已经能很好的意识到了这个平安问题,并终究使用数据库转移机制或者 prepared 语句来代替魔术引号功效。

魔术引号缺陷:

可移植性 :编程时认为其翻开或并闭都会影响到移植性。可以用 get_magic_quotes_gpc() 来检查可否翻开,并据此编程。

机能: 由于并不是每一段被转义的数据都要插入数据库的,假如所有进入 PHP 的数据都被转义的话,那么会对程序的施行效力发生必然的影响。在运转时调取转义函数(如 addslashes())更有效力。 尽管 php.ini-dist 默许翻开了这个选项,但是 php.ini-recommended 默许却关闭了它,主如果出于机能的思考。

不便: 由于不是所有数据都需要转义,在不需要转义的地方看到转义的数据就很烦。比方说通过表单发送邮件,结果看到一大堆的 \'。针对这个问题,可以使用 stripslashes() 函数处置。

开关魔术引号:

magic_quotes_gpc 是不克不及通过ini_set()的来设定的,设定magic_quotes_gpc有三种办法。

1、修改PHP配置文件php.ini。这种办法需要对效劳器有治理权限才能修改,假如只是虚拟空间就只能使用后面两种办法。

; 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的状况下这种才能使用,

php_flag magic_quotes_gpc Off

3、代码中屏蔽。这种办法的移植性较强,但是效力最低,所以在有效劳器治理权限的时候通过修改配置文章的方式关闭magic_quotes_gpc是最好的。

实例代码:

<?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);
}
?>

总结:

起初是为了阻挠SQL注入的需要引入了魔法引号,关于开发者有必然好的好友,但在使用的时候也带来许多的不便,此刻有了更多更好的方案来替换,所以假如还是在php 5.3.0或php 5.3.0此前的版本做开发应当尽量幸免使用魔法引号,php 5.4.0今后已经移除了。

以上就是php中什么是魔术引号的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板