澳门新葡萄京官网注册[Php]去除魔术符号

?php/***去除魔术调换*/classkillMagicQuote{publicfunctionStrip_Magic_Slashes($varImp){$varImp=is_array($varImp)?array_map(array($this,”Strip_Magic_Slashes”),$varImp):#将数组中全部值实行函数操作.stripslashes($varImpState of Qatar;return$varImp;}/***去除$_GET$_POST$_REQUEST内魔术符号.*/publicfunctionMagic_Quotes_Off(){if(get_magic_quotes_gpc()){$_GET=$this-Strip_Magic_Slashes($_GET);$_POST=$this-Strip_Magic_Slashes($_POST);$_REQUEST=$this-Strip_Magic_Slashes($_REQUEST);}}}?

本文实例陈述了ThinkPHP入库现身一遍反斜线转义及数量库类转义的解决措施。分享给我们供大家仿效。具体方法如下:

相信广大人都蒙受过与magic_quotes有关的难题.上边给出的代码是自家学者家的(不是抄:卡塔尔国OpenPNE里的东西(小东瀛的开源SNS卡塔尔.

这种意况是在 magic_quotes_gpc
开启的处境下产生的。原因是thinkphp在入库的时候从不看清
magic_quotes_gpc
是或不是展开,不管三七八十五地开展了转义处理。解决办法是在入口文件扩大如下代码则可:

<

复制代码 代码如下:if
(!get_magic_quotes_gpc { function addslashes_deep { $value =
is_array ? array_map(‘addslashes_deep’, $value) : addslashes; return
$value; } $_POST = array_map(‘addslashes_deep’, $_POST); $_GET =
array_map(‘addslashes_deep’, $_GET); $_COOKIE =
array_map(‘addslashes_deep’, $_COOKIE); $_REQUEST =
array_map(‘addslashes_deep’, $_REQUEST); }

有人这么更正DbMysql.class.php中的转义函数:

复制代码 代码如下:public function
escape_string { if (get_magic_quotes_gpc { return $str; } if {
return mysql_real_escape_string;}else{ return mysql_escape_string;
} }

实在此种办法并不可取!因为纵然魔术函数on时,而$str又不是post或get得来,它依然没加反斜线。所以作者随意$str是不是已经被转义,一律先去除转义,然后再加上转义。那样就防止了三遍转义,也制止了脱漏转义。下边是自己的改造章程:

复制代码 代码如下:public function
escape_string { $str = stripslashes; if { return
mysql_real_escape_string; }else{ return mysql_escape_string; } }

期待本文所述对我们的ThinkPHP框架程序设计具备扶植。

发表评论

电子邮件地址不会被公开。 必填项已用*标注