问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样打开“魔术引号(Magic Quote)GPC”

发布网友 发布时间:2022-04-28 05:40

我来回答

2个回答

懂视网 时间:2022-04-28 10:01

关闭php魔术引号的方法:在PHP配置文件php.ini中将“magic_quotes_gpc”、“magic_quotes_runtime”、“magic_quotes_sybase”选项设为“Off”。

推荐:《PHP视频教程》

PHP 关闭魔术引号

1、修改PHP配置文件php.ini

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

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

如下所示:

magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off

2、利用.htaccess文件

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

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

php_flag magic_quotes_gpc Off

3、在代码中屏蔽

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

在所有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);
}

更多相关编程知识,可访问:编程学习网站!!

热心网友 时间:2022-04-28 07:09


PHP
中是默认打开“魔术引号(Magic
Quote)GPC”的。开启magic_quote_gpc=on之后,相当于使用addslshes()这个函数。
魔术引号(Magic
Quote)是一个自动将进入
PHP
脚本的数据进行转义的过程。最好在编码时不要转义而在运行时根据需要而转义。
一、什么是魔术引号
当打开时,所有的
'(单引号),"(双引号),\(反斜线)和
NULL
字符都会被自动加上一个反斜线进行转义。这和
addslashes()
作用完全相同。
一共有三个魔术引号指令:
1、magic_quotes_gpc
影响到
HTTP
请求数据(GET,POST

COOKIE)。不能在运行时改变。在
PHP
中默认值为
on。
参见
get_magic_quotes_gpc()。
2、magic_quotes_runtime
如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。该选项可在运行的时改变,在
PHP
中的默认值为
off。
参见
set_magic_quotes_runtime()

get_magic_quotes_runtime()。
3、magic_quotes_sybase
如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖
magic_quotes_gpc。如果同时打开两个选项的话,单引号将会被转义成
''。而双引号、反斜线

NULL
字符将不会进行转义。
如何取得其值参见
ini_get()。
二、为什么要用魔术引号
1、对初学者很有用
魔术引号在
PHP
中用来实现避免初学者的代码更危险。尽管SQL
注入在魔术引号打开的情况下仍然有可能实现,但起码系统的风险减少很多了。
2、方便使用
当向数据库中插入数据时,魔术引号所做的就是自动对所有的GET、POST、COOKIE
数据运用
addslashes()
函数。
三、为什么不用魔术引号
1、可移植性
编程时认为其打开或并闭都会影响到移植性。可以用get_magic_quotes_gpc()
来检查是否打开,并据此编程。
2、性能
由于并不是每一段被转义的数据都要插入数据库的,如果所有进入PHP
的数据都被转义的话,那么会对程序的执行效率产生一定的影响。在运行时调用转义函数(如
addslashes())更有效率。
尽管
php.ini-dist
默认打开了这个选项,但是php.ini-recommended
默认却关闭了它,主要是出于性能的考虑。
3、不便
由于不是所有数据都需要转义,在不需要转义的地方看到转义的数据就很烦。比如说通过表单发送邮件,结果看到一大堆的
\'。针对这个问题,可以使用stripslashes()
函数处理。
四、关闭魔术引号
magic_quotes_gpc
指令只能在系统级关闭,不能在运行时。也就是说不能用
ini_set()。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
新生儿脐疝的诊断与鉴别 小儿脐疝发病原因 导致新生儿脐疝发作的原因有哪些? 腾讯视频2023年10月24日免费会员账号分享-腾讯视频2023年10月24日免 ... 百度网盘激活码免费领取2024 百度网盘激活码免费领取最新分享 我是男生 今年18周岁 我身高172是不是完蛋了 我还会长吗? 估计还能长... 开荒保洁一平米多少钱 物业开荒费用包括哪些 公司保洁开荒多少钱一平 开封灌汤包哪家正宗 开封哪家灌汤包最好吃 跪求各位php高手,为什么不能判断用户名重复,不知道哪里错了?? php+mysql注册时用户名不能相同的代码 用php写网站时,用txt存用户名,如何解决多个用户同时登录和注册问题 如何用php实现一个账号不能多个用户同时登陆? 如何用php实现一个账号不能多个用户同时登陆 怎样防止一个用户名重复登陆,该如何处理 php+js如何判断用户名不能重复注册 谁有 php 注册防重复的 源码 可以借给我借鉴一下!!或者思路也可以! php对注册用户名的限制代码怎么写? 请问php防止一个用户重复登录的问题 PHP “注册表单”提交后数据库如果已经有一个相同用户名则不可以注册怎么写 php如何限制同一IP24小时内重复注册? php注册现在同一ip不能重复注册 如何在php上限制一个ip一天只能注册10个账户,注册多了不允许 PHP注册页面不让同名用户重复注册在数据库里。我数据库名user,表名yinfu.字段有用户name,密码有password PHP用户注册防止重名怎么实现 php注册表单用户名重复怎么禁止提交 在php的注册页面中,不想让用户可以重复注册,怎样解决?改了好多遍就是不行。希望有人帮助解决,谢谢了。 请教php 如何正则去掉中间空格~呢? 请教php 如何正则去掉中间空格?其它空格保留 PHP:什么是魔术引号 [php学习]请教1个魔术引号修正函数 求解这段PHP代码是什么意思,作用是什么 怎样关闭PHP服务? 怎么关闭phpstorm的注释 如何开启(关闭)PHP的iconv模块 500分!DREAMHOST 如何自己配置PHP.INI? 想请教各位,如何学习PHP,求具体学习步骤?越详细越好,求PHP高人指点?不胜感激。。 如何关闭php安全模式? php正则表达式替换图片地址 如何用正则表达式修改图片路径? 请问怎样用php 正则表达式取设置宽和高的[img][/img]标签里面的图片地址 求php中正则表达式过滤或者替换掉特定图片路径的图片 php如何使用正则表达式匹配url图片啊 php用正则表达式替换img中src的路径。 求教php正则高手。php正则获取html内容中的所有img路径及名称,替换img的路径 php 如何用正则表达式修改图片地址 我想用正则表达式去替换一个图片路径,但要保持图片名称跟替换前一样的,要怎么写怎么写才能达到这个效果 php 正则表达式怎么把图片URL匹配出来呢? php如何用正则表达式抓取网页中的图片地址?