天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

基于magic_quotes_gpc與magic_quotes_runtime的區別與使用介紹

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

magic_quotes_gpc 為 on,它主要是對所有的 GET、POST 和 COOKIE 數據自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字符串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。

兩者不同

set_magic_quotes_runtime() 可以讓程序員在代碼中動態開啟或關閉 magic_quotes_runtime,
set_magic_quotes_runtime(1) 表示開啟,set_magic_quotes_runtime(0) 則表示關閉。當set_magic_quotes_runtime(1) 時,從數據庫或通過fread之類的函數讀取的文本,將自動對' “和/自動加上反斜杠/進行轉義,防止溢出。這在對數據庫的數據進行轉移的時候非常有用。但在一般情況下,應當將其關閉,否則從數據庫讀取出來的數據單引號、雙引號和反斜杠都會被加上/,導致顯示不正常。像Discuz,phpWind都在公共文件的頭部加上一句 set_magic_quotes_runtime(0); 強制關閉 magic_quotes_runtime 。

magic_quotes_gpc

作用范圍是:WEB客戶服務端;
作用時間:請求開始是,例如當腳本運行時.

magic_quotes_runtime

作用范圍:從文件中讀取的數據或執行exec()的結果或是從SQL查詢中得到的;
作用時間:每次當腳本訪問運行狀態中產生的數據.

所以

magic_quotes_gpc的設定值將會影響通過Get/Post/Cookies獲得的數據,
magic_quotes_runtime的設定值將會影響從文件中讀取的數據或從數據庫查詢得到的數據,
magic_quotes_gpc 是對通過GET、POST、COOKIE傳遞的數據進行轉義,一般在數據入庫前要先進行轉義,
magic_quotes_gpc不能在代碼中動態開啟或關閉,需要到php.ini將magic_quotes_gpc設置為on或off,
代碼中可以用get_magic_quotes_gpc獲取magic_quotes_gpc的狀態。
當magic_quotes_gpc為off時,需要手工對數據進行addslashes,代碼如下:
復制代碼 代碼如下:
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; 
 }

另一示例:
復制代碼 代碼如下:
$data1 = $_POST['aaa']; 
 $data2 = implode(file('1.txt')); 

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

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

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

經驗總結:

一、對于GPC,不管系統有沒有開啟magic_quotes_gpc(即php.ini中magic_quotes_gpc = On),我們統一開啟 magic_quotes_gpc,對get、post、cookie的內容進行轉義。操作如下:
(摘自uchome系統)
復制代碼 代碼如下:
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值轉義 
 $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; 
     } 
 }

二、對于magic_quotes_runtime,我們統一關閉它,即set_magic_quotes_runtime(0);不讓從數據庫讀取出來的數據的單引號、雙引號和反斜杠都自動被加上/。這樣,對數據庫的操作如下:添加數據到數據庫之前,我們手動對數據進行addslashes(),而從數據庫取出數據時,則作相反操作,即stripslashes()。

三、對于要序列化的內容,要保持裸數據,即要去掉轉義,stripslashes(),然后在把序列化過的內容保存到數據庫當中(注意,序列化過的內容是不帶單引號(')、雙引號(”)、反斜線(/)的),示例如下:
$feedarr['body_data'] = serialize(stripslashes($body_data));

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

出現Function set_magic_quotes_runtime() is deprecated 問題?

在安裝phpCMS出現Deprecated: Function set_magic_quotes_runtime() is deprecated 錯誤,查了一下網絡及資料發現是php5.3和php6.0之后移除了set_magic_quotes_runtime()函數。
我可以使用如下方案替代:

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

php技術基于magic_quotes_gpc與magic_quotes_runtime的區別與使用介紹,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产免费午夜高清 | 亚洲国产在线精品国偷产拍 | 国产精品无码亚洲精品 | 亚洲二区电影 | 成人毛片在线播放 | 大胸美女脱内衣黄网站 | 777琪琪午夜理论电影网 | 全黄h全肉细节文在线观看 全黄H全肉细节文短篇 | 久久伊人网站 | 色综合欧美色综合七久久 | 亚洲日本香蕉视频观看视频 | 6080yy奇领电影在线看 | 岛国在线无码免费观 | 国产精品亚洲精品影院 | 日本50人群体交乱 | 俄罗斯大白屁股 | 国产综合18久久久久久软件 | 九九热在线视频观看这里只有精品 | 久久免费看少妇高潮A片特爽 | 91综合精品网站久久 | 亚洲呦女专区 | 精品久久中文字幕有码 | 亚洲视频精选 | 国产精品一区二区免费 | 欧美一第一页草草影院 | 尤物99久久久合集一区区 | 男污女XO猛烈的动态图 | 伊人亚洲AV久久无码精品 | 日韩精品无码久久一区二区三 | 色狠狠色综合吹潮 | 中文字幕在线永久 | 免费国产在线观看 | 国产精品一区二区四区 | 亚州三级视频 | 日本六九视频 | 大陆午夜伦理 | 黄色三级三级三级免费看 | 夜夜草导航 | 日美欧韩一区二去三区 | 国内精品九九视频 | 99免费在线观看 |