欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于magic_quotes_gpc與magic_quotes_runtime的區(qū)別與使用介紹

 更新時(shí)間:2013年04月22日 09:43:44   作者:  
本篇文章小編為大家介紹,基于magic_quotes_gpc與magic_quotes_runtime的區(qū)別與使用介紹。需要的朋友參考下

當(dāng)你的數(shù)據(jù)中有一些   \  ”  ‘
這樣的字符要寫入到數(shù)據(jù)庫里面,又想不被過濾掉的時(shí)候,它就很有用,會(huì)在這些字符前自動(dòng)加上\,如
中國\地大物博”哈哈”
中國\\地大物博\”哈哈\”
可以使用set_maginc_quotes_runtime(0)關(guān)閉掉,當(dāng)然你也可以直接在php.ini中設(shè)置。
get_magic_quotes_runtime() 取得 PHP 環(huán)境變量 magic_quotes_runtime 的值。

magic_quotes_gpc 為 on,它主要是對(duì)所有的 GET、POST 和 COOKIE 數(shù)據(jù)自動(dòng)運(yùn)行 addslashes()。不要對(duì)已經(jīng)被 magic_quotes_gpc 轉(zhuǎn)義過的字符串使用 addslashes(),因?yàn)檫@樣會(huì)導(dǎo)致雙層轉(zhuǎn)義。遇到這種情況時(shí)可以使用函數(shù) get_magic_quotes_gpc() 進(jìn)行檢測(cè)。

兩者不同

set_magic_quotes_runtime() 可以讓程序員在代碼中動(dòng)態(tài)開啟或關(guān)閉 magic_quotes_runtime,
set_magic_quotes_runtime(1) 表示開啟,set_magic_quotes_runtime(0) 則表示關(guān)閉。當(dāng)set_magic_quotes_runtime(1) 時(shí),從數(shù)據(jù)庫或通過fread之類的函數(shù)讀取的文本,將自動(dòng)對(duì)' “和\自動(dòng)加上反斜杠\進(jìn)行轉(zhuǎn)義,防止溢出。這在對(duì)數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行轉(zhuǎn)移的時(shí)候非常有用。但在一般情況下,應(yīng)當(dāng)將其關(guān)閉,否則從數(shù)據(jù)庫讀取出來的數(shù)據(jù)單引號(hào)、雙引號(hào)和反斜杠都會(huì)被加上\,導(dǎo)致顯示不正常。像Discuz,PHPWind都在公共文件的頭部加上一句 set_magic_quotes_runtime(0); 強(qiáng)制關(guān)閉 magic_quotes_runtime 。

magic_quotes_gpc

作用范圍是:WEB客戶服務(wù)端;
作用時(shí)間:請(qǐng)求開始是,例如當(dāng)腳本運(yùn)行時(shí).

magic_quotes_runtime

作用范圍:從文件中讀取的數(shù)據(jù)或執(zhí)行exec()的結(jié)果或是從SQL查詢中得到的;
作用時(shí)間:每次當(dāng)腳本訪問運(yùn)行狀態(tài)中產(chǎn)生的數(shù)據(jù).

所以

magic_quotes_gpc的設(shè)定值將會(huì)影響通過Get/Post/Cookies獲得的數(shù)據(jù),
magic_quotes_runtime的設(shè)定值將會(huì)影響從文件中讀取的數(shù)據(jù)或從數(shù)據(jù)庫查詢得到的數(shù)據(jù),
magic_quotes_gpc 是對(duì)通過GET、POST、COOKIE傳遞的數(shù)據(jù)進(jìn)行轉(zhuǎn)義,一般在數(shù)據(jù)入庫前要先進(jìn)行轉(zhuǎn)義,
magic_quotes_gpc不能在代碼中動(dòng)態(tài)開啟或關(guān)閉,需要到php.ini將magic_quotes_gpc設(shè)置為on或off,
代碼中可以用get_magic_quotes_gpc獲取magic_quotes_gpc的狀態(tài)。
當(dāng)magic_quotes_gpc為off時(shí),需要手工對(duì)數(shù)據(jù)進(jìn)行addslashes,代碼如下:

復(fù)制代碼 代碼如下:

if (!get_magic_quotes_gpc()) { 
     new_addslashes($_GET); 
     new_addslashes($_POST); 
     new_addslashes($_COOKIE); 
 } 

 function new_addslashes($string) { 
     if (is_array($string)) { 
         foreach ($string as $key => $value) { 
             $string[$key] = new_addslashes($value); 
         } 
     } else { 
         $string = addslashes($string); 
     } 
     return $string; 
 }

另一示例:
復(fù)制代碼 代碼如下:

$data1 = $_POST['aaa']; 
 $data2 = implode(file('1.txt')); 

 if (get_magic_quotes_gpc()) { 
     //把數(shù)據(jù)$data1直接寫入數(shù)據(jù)庫 
 } else { 
     $data1 = addslashes($data1); 
     //把數(shù)據(jù)$data1寫入數(shù)據(jù)庫 
 } 

 if (get_magic_quotes_runtime()){ 
     //把數(shù)據(jù)$data2直接寫入數(shù)據(jù)庫 
     //從數(shù)據(jù)庫讀出的數(shù)據(jù)要經(jīng)過一次stripslashes()之后輸出 
 } else { 
     $data2 = addslashes($data2); 
     //把數(shù)據(jù)$data2寫入數(shù)據(jù)庫 
     //從數(shù)據(jù)庫讀出的數(shù)據(jù)直接輸出 
 }

++++++++++++++++++++++++++++++++++++++++++++++++++++++

經(jīng)驗(yàn)總結(jié):

一、對(duì)于GPC,不管系統(tǒng)有沒有開啟magic_quotes_gpc(即php.ini中magic_quotes_gpc = On),我們統(tǒng)一開啟 magic_quotes_gpc,對(duì)get、post、cookie的內(nèi)容進(jìn)行轉(zhuǎn)義。操作如下:
(摘自u(píng)chome系統(tǒng))

復(fù)制代碼 代碼如下:

function saddslashes($string) { 
     if (is_array($string)) { 
         foreach ($string as $key => $val) { 
             $string[$key] = saddslashes($val); 
         } 
     } else { 
         $string = addslashes($string); 
     } 
     return $string; 
 } 

 //GPC過濾 
 $magic_quote = get_magic_quotes_gpc(); 
 if(empty($magic_quote)) { 
     $_GET = saddslashes($_GET); 
     $_POST = saddslashes($_POST); 
 } 

 //COOKIE,給cookie值轉(zhuǎn)義 
 $prelength = strlen($_SC['cookiepre']); 
 foreach ($_COOKIE as $key => $val) { 
     if(substr($key, 0, $prelength) == $_SC['cookiepre']) { 
         $_SCOOKIE[(substr($key, $prelength))] = empty($magic_quote) ? saddslashes($val) : $val; 
     } 
 }

二、對(duì)于magic_quotes_runtime,我們統(tǒng)一關(guān)閉它,即set_magic_quotes_runtime(0);不讓從數(shù)據(jù)庫讀取出來的數(shù)據(jù)的單引號(hào)、雙引號(hào)和反斜杠都自動(dòng)被加上\。這樣,對(duì)數(shù)據(jù)庫的操作如下:添加數(shù)據(jù)到數(shù)據(jù)庫之前,我們手動(dòng)對(duì)數(shù)據(jù)進(jìn)行addslashes(),而從數(shù)據(jù)庫取出數(shù)據(jù)時(shí),則作相反操作,即stripslashes()。

三、對(duì)于要序列化的內(nèi)容,要保持裸數(shù)據(jù),即要去掉轉(zhuǎn)義,stripslashes(),然后在把序列化過的內(nèi)容保存到數(shù)據(jù)庫當(dāng)中(注意,序列化過的內(nèi)容是不帶單引號(hào)(')、雙引號(hào)(”)、反斜線(\)的),示例如下:
$feedarr['body_data'] = serialize(stripslashes($body_data));

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

出現(xiàn)Function set_magic_quotes_runtime() is deprecated 問題?

在安裝PHPCMS出現(xiàn)Deprecated: Function set_magic_quotes_runtime() is deprecated 錯(cuò)誤,查了一下網(wǎng)絡(luò)及資料發(fā)現(xiàn)是PHP5.3和PHP6.0之后移除了set_magic_quotes_runtime()函數(shù)。
我可以使用如下方案替代:

view sourceprint?
 @set_magic_quotes_runtime(0);

view sourceprint?
 ini_set("magic_quotes_runtime", 0);

view sourceprint?
 if (phpversion() < '5.3.0') { 
     set_magic_quotes_runtime(0); 
 }

相關(guān)文章

  • PHP實(shí)現(xiàn)二維數(shù)組按指定的鍵名排序的方法示例

    PHP實(shí)現(xiàn)二維數(shù)組按指定的鍵名排序的方法示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)二維數(shù)組按指定的鍵名排序的方法,這里以數(shù)組記錄三個(gè)人信息中的年齡age字段值進(jìn)行排序?yàn)槔?分析了php二維數(shù)組排序的操作技巧,需要的朋友可以參考下
    2017-08-08
  • PHP中opcode緩存簡(jiǎn)單用法分析

    PHP中opcode緩存簡(jiǎn)單用法分析

    這篇文章主要介紹了PHP中opcode緩存簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了opcode的概念、原理、簡(jiǎn)單開啟與使用方法,需要的朋友可以參考下
    2018-03-03
  • PHP中通過ADO調(diào)用Access數(shù)據(jù)庫的方法測(cè)試不通過

    PHP中通過ADO調(diào)用Access數(shù)據(jù)庫的方法測(cè)試不通過

    PHP中通過ADO調(diào)用Access數(shù)據(jù)庫的方法測(cè)試不通過...
    2006-12-12
  • PHP自動(dòng)生成縮略圖函數(shù)的源碼示例

    PHP自動(dòng)生成縮略圖函數(shù)的源碼示例

    今天小編就為大家分享一篇關(guān)于PHP自動(dòng)生成縮略圖函數(shù)的源碼示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • PHP中if和or運(yùn)行效率對(duì)比

    PHP中if和or運(yùn)行效率對(duì)比

    這篇文章主要介紹了PHP中if和or運(yùn)行效率對(duì)比,有助于深入了解PHP程序中相近語句的效率對(duì)比,對(duì)于編寫高質(zhì)量的PHP程序有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • phpmyadmin打開很慢的解決方法

    phpmyadmin打開很慢的解決方法

    這篇文章主要介紹了phpmyadmin打開很慢的解決方法,一般這個(gè)問題的原因是phpmyadmin的版本檢測(cè)造成的,因?yàn)閜hpmyadmin的官網(wǎng)有時(shí)會(huì)打不開,這時(shí)只要取消代碼中的版本檢測(cè)即可解決這個(gè)問題,需要的朋友可以參考下
    2014-04-04
  • 深入理解php的MySQL連接類

    深入理解php的MySQL連接類

    本篇文章是對(duì)php的MySQL連接類進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP頁面靜態(tài)化——純靜態(tài)與偽靜態(tài)用法詳解

    PHP頁面靜態(tài)化——純靜態(tài)與偽靜態(tài)用法詳解

    這篇文章主要介紹了PHP頁面靜態(tài)化——純靜態(tài)與偽靜態(tài)用法,結(jié)合實(shí)例形式分析了PHP頁面靜態(tài)化——純靜態(tài)與偽靜態(tài)相關(guān)原理、實(shí)現(xiàn)方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-06-06
  • php數(shù)組和鏈表的區(qū)別總結(jié)

    php數(shù)組和鏈表的區(qū)別總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于php數(shù)組和鏈表的區(qū)別的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • php采集時(shí)被封ip的解決方法

    php采集時(shí)被封ip的解決方法

    最近各種網(wǎng)站的采集程序?qū)懙谋容^多,遇到在采某網(wǎng)站時(shí)采到100多條時(shí)突然發(fā)現(xiàn)對(duì)方的網(wǎng)站打不開了,猜到肯定被封ip了,用了代理還是會(huì)封,這不是辦法。
    2010-08-08

最新評(píng)論