PHP教程 Magic quotes.docx
《PHP教程 Magic quotes.docx》由会员分享,可在线阅读,更多相关《PHP教程 Magic quotes.docx(14页珍藏版)》请在冰豆网上搜索。
![PHP教程 Magic quotes.docx](https://file1.bdocx.com/fileroot1/2022-11/15/7f973976-319b-4861-aaa8-f2569b4c4d67/7f973976-319b-4861-aaa8-f2569b4c4d671.gif)
PHP教程Magicquotes
PHP教程Magicquotes
对于Magicquotes,对于PHPer而言是个老生常谈的问题。
今天无意间看到篇文章,结合PHPManual以及其回复,在这里做个简单的汇总。
简而言之,Magicquotes开启后会自动转义输入的数据。
其中,所有的单引号(')、双引号(")、反斜线、和NULL字符都会被转义(增加个反斜线),其实这操作本质上调用的是addslashes函数。
为什么使用Magicquotes
方便快捷
PHP的设计者在设计之初的构想就是能够快速方便的编程。
例如插入数据库时,Magicquotes会自动将数据转义,这很方便。
对初学者有利
Magicquotes可以从一定程度上,让初学者带离脚本的安全风险。
例如在没有任何保护措施的代码下,开启了Magicquotes后会少很多的风险,例如注入问题。
当然,单一使用此方法,并不能完全阻止此类安全问题。
“我没有权限去关闭”
很显然你已经可能意识到了这个问题,但是主机空间并非完全由自己控制。
为什么不使用Magicquotes
可移植性
无论此功能是否开启,它都会影响脚本的可移植性,因为它影响我们后续过滤数据的操作。
性能问题
在获取所有的外部数据之前都会被转义,这无疑会增加运行时的花销(而且并不是所有的数据都需要转义)。
造成困惑
正如上述所言,并非所有的数据都需要被转义。
有可能出现的一种情况,就是当你为了获取未被转义的数据,而“疯狂的”使用stripslashes函数。
PHP6已经不支持
PHP的设计者显然已经意识到了自己的“错误”,所以在PHP6中已经将其废弃。
如何禁用Magicquotes
按照本人观点,使用php.ini配置文件全局禁用Magicquotes是最靠谱的。
参考下面的代码
;Magicquotes
;
;MagicquotesforincomingGET/POST/Cookiedata.
magic_quotes_gpc=Off
;Magicquotesforruntime-generateddata,e.g.datafromSQL,fromexec(),etc.
magic_quotes_runtime=Off
;UseSybase-stylemagicquotes(escape'with''insteadof').
magic_quotes_sybase=Off
然而线上的主机可能无法让你修改php.ini文件,那么可以使用.htaccess文件禁用,加入下面的代码
php_flagmagic_quotes_gpcOff
上述可移植的代码而言,无论是否禁用magic_quotes,数据必须保持一致。
那么下面的代码可以帮助您
php
if(get_magic_quotes_gpc()){
functionstripslashes_deep($value){
$value=is_array($value)?
array_map('stripslashes_deep',$value):
stripslashes($value);
return$value;
}
对于Magicquotes,对于PHPer而言是个老生常谈的问题。
今天无意间看到篇文章,结合PHPManual以及其回复,在这里做个简单的汇总。
简而言之,Magicquotes开启后会自动转义输入的数据。
其中,所有的单引号(')、双引号(")、反斜线、和NULL字符都会被转义(增加个反斜线),其实这操作本质上调用的是addslashes函数。
为什么使用Magicquotes
方便快捷
PHP的设计者在设计之初的构想就是能够快速方便的编程。
例如插入数据库时,Magicquotes会自动将数据转义,这很方便。
对初学者有利
Magicquotes可以从一定程度上,让初学者带离脚本的安全风险。
例如在没有任何保护措施的代码下,开启了Magicquotes后会少很多的风险,例如注入问题。
当然,单一使用此方法,并不能完全阻止此类安全问题。
“我没有权限去关闭”
很显然你已经可能意识到了这个问题,但是主机空间并非完全由自己控制。
为什么不使用Magicquotes
可移植性
无论此功能是否开启,它都会影响脚本的可移植性,因为它影响我们后续过滤数据的操作。
性能问题
在获取所有的外部数据之前都会被转义,这无疑会增加运行时的花销(而且并不是所有的数据都需要转义)。
造成困惑
正如上述所言,并非所有的数据都需要被转义。
有可能出现的一种情况,就是当你为了获取未被转义的数据,而“疯狂的”使用stripslashes函数。
PHP6已经不支持
PHP的设计者显然已经意识到了自己的“错误”,所以在PHP6中已经将其废弃。
如何禁用Magicquotes
按照本人观点,使用php.ini配置文件全局禁用Magicquotes是最靠谱的。
参考下面的代码
;Magicquotes
;
;MagicquotesforincomingGET/POST/Cookiedata.
magic_quotes_gpc=Off
;Magicquotesforruntime-generateddata,e.g.datafromSQL,fromexec(),etc.
magic_quotes_runtime=Off
;UseSybase-stylemagicquotes(escape'with''insteadof').
magic_quotes_sybase=Off
然而线上的主机可能无法让你修改php.ini文件,那么可以使用.htaccess文件禁用,加入下面的代码
php_flagmagic_quotes_gpcOff
上述可移植的代码而言,无论是否禁用magic_quotes,数据必须保持一致。
那么下面的代码可以帮助您
___FCKpd___2
GET=array_map('stripslashes_deep',
对于Magicquotes,对于PHPer而言是个老生常谈的问题。
今天无意间看到篇文章,结合PHPManual以及其回复,在这里做个简单的汇总。
简而言之,Magicquotes开启后会自动转义输入的数据。
其中,所有的单引号(')、双引号(")、反斜线、和NULL字符都会被转义(增加个反斜线),其实这操作本质上调用的是addslashes函数。
为什么使用Magicquotes
方便快捷
PHP的设计者在设计之初的构想就是能够快速方便的编程。
例如插入数据库时,Magicquotes会自动将数据转义,这很方便。
对初学者有利
Magicquotes可以从一定程度上,让初学者带离脚本的安全风险。
例如在没有任何保护措施的代码下,开启了Magicquotes后会少很多的风险,例如注入问题。
当然,单一使用此方法,并不能完全阻止此类安全问题。
“我没有权限去关闭”
很显然你已经可能意识到了这个问题,但是主机空间并非完全由自己控制。
为什么不使用Magicquotes
可移植性
无论此功能是否开启,它都会影响脚本的可移植性,因为它影响我们后续过滤数据的操作。
性能问题
在获取所有的外部数据之前都会被转义,这无疑会增加运行时的花销(而且并不是所有的数据都需要转义)。
造成困惑
正如上述所言,并非所有的数据都需要被转义。
有可能出现的一种情况,就是当你为了获取未被转义的数据,而“疯狂的”使用stripslashes函数。
PHP6已经不支持
PHP的设计者显然已经意识到了自己的“错误”,所以在PHP6中已经将其废弃。
如何禁用Magicquotes
按照本人观点,使用php.ini配置文件全局禁用Magicquotes是最靠谱的。
参考下面的代码
;Magicquotes
;
;MagicquotesforincomingGET/POST/Cookiedata.
magic_quotes_gpc=Off
;Magicquotesforruntime-generateddata,e.g.datafromSQL,fromexec(),etc.
magic_quotes_runtime=Off
;UseSybase-stylemagicquotes(escape'with''insteadof').
magic_quotes_sybase=Off
然而线上的主机可能无法让你修改php.ini文件,那么可以使用.htaccess文件禁用,加入下面的代码
php_flagmagic_quotes_gpcOff
上述可移植的代码而言,无论是否禁用magic_quotes,数据必须保持一致。
那么下面的代码可以帮助您
___FCKpd___2
GET);
对于Magicquotes,对于PHPer而言是个老生常谈的问题。
今天无意间看到篇文章,结合PHPManual以及其回复,在这里做个简单的汇总。
简而言之,Magicquotes开启后会自动转义输入的数据。
其中,所有的单引号(')、双引号(")、反斜线、和NULL字符都会被转义(增加个反斜线),其实这操作本质上调用的是addslashes函数。
为什么使用Magicquotes
方便快捷
PHP的设计者在设计之初的构想就是能够快速方便的编程。
例如插入数据库时,Magicquotes会自动将数据转义,这很方便。
对初学者有利
Magicquotes可以从一定程度上,让初学者带离脚本的安全风险。
例如在没有任何保护措施的代码下,开启了Magicquotes后会少很多的风险,例如注入问题。
当然,单一使用此方法,并不能完全阻止此类安全问题。
“我没有权限去关闭”
很显然你已经可能意识到了这个问题,但是主机空间并非完全由自己控制。
为什么不使用Magicquotes
可移植性
无论此功能是否开启,它都会影响脚本的可移植性,因为它影响我们后续过滤数据的操作。
性能问题
在获取所有的外部数据之前都会被转义,这无疑会增加运行时的花销(而且并不是所有的数据都需要转义)。
造成困惑
正如上述所言,并非所有的数据都需要被转义。
有可能出现的一种情况,就是当你为了获取未被转义的数据,而“疯狂的”使用stripslashes函数。
PHP6已经不支持
PHP的设计者显然已经意识到了自己的“错误”,所以在PHP6中已经将其废弃。
如何禁用Magicquotes
按照本人观点,使用php.ini配置文件全局禁用Magicquotes是最靠谱的。
参考下面的代码
;Magicquotes
;
;MagicquotesforincomingGET/POST/Cookiedata.
magic_quotes_gpc=Off
;Magicquotesforruntime-generateddata,e.g.datafromSQL,fromexec(),etc.
magic_quotes_runtime=Off
;UseSybase-stylemagicquotes(