在乙個專案中,魔術引號若是開啟的話,所有的反斜線(\)、單引號(')、雙引號(")、null 字元都會被自動加上乙個反斜線進行轉義,這和 addslashes() 作用完全相同。 這裡主要講四個與之相關的函式:set_magic_quotes_runtime、magic_quotes_gpc、addslashes、stripslashes。
set_magic_quotes_runtime(),設定當前magic_quotes_runtime 配置選項的啟用狀態,0為關閉,1為開啟。啥意思呢?這樣理解,如是set_magic_quotes_runtime(1)或是配置檔案中magic_quotes_runtime為true(這個在php.ini中配置),那麼php指令碼讀取檔案或是從資料庫中讀取資料,遇到反斜線(\)、單引號(')、雙引號(")、null時,會在前面自動加上轉義字元,變成\\、\'、\」、\null;若是關閉的話,也就是set_magic_quotes_runtime(0)magic_quotes_runtime為false,那麼便會轉義,此時可以借助addslashes進行轉義。
magic_quotes_gpc(),當此值為1時,會對http請求中的g($_get)、p($_post)、c($_cookie)單雙引號和反斜線進行轉義;反之則不會。該操作一般見於表單提交的資料庫操作,若是值為0時,便用addslashes進行轉義存入資料庫中,取出時再用stripslashes函式把反斜線給去掉。
特別注意的是在php 5.4版本時,魔術引號被移除了,因此轉義都需要加上addslashes函式。
$_get['des'] = "she's a beauty";
foreach (array('_get', '_post', '_cookie') as $_request) != '_' && $$_key=addslashes($_value);
echo $$_key;
}}
看看上面**能夠理解不,這是摘自我晚上看的關於介紹discuz中原始碼分析的書,$$_key是否有點繞,應該不會的,就是變數多重引用,可以看看我的
php變數的幾種寫法部落格,上述**就是過濾惡意偽造gpc請求預定義變數行為。
PHP中的魔術引號
魔術引號 magic quote 是乙個自動將進入 php 指令碼的資料進行轉義的過程。最好在編碼時不要轉義而在執行時根據需要而轉義。當開啟時,所有的 單引號 雙引號 反斜線 和 null 字元都會被自動加上乙個反斜線進行轉義。這和 b addslashes b 作用完全相同。轉義魔術引號的函式 b...
PHP中的魔術引號
魔術引號 magic quote 是乙個自動將進入 php 指令碼的資料進行轉義的過程。什麼是魔術引號 當開啟時,所有的 單引號 雙引號 反斜線 都會被自動加上乙個反斜線進行轉義。這和addslashes 作用完全相同。三個魔術引號指令 1.magic quotes gpc 影響到 http 請求資...
什麼是PHP魔術引號
今天在讀ecshop的原始碼中發現裡面有幾個地方涉及到了php魔術引號,之前也碰到過都忽略過去了,再次碰到該深入的理解,雖然自php 5.3.0起魔術引號被廢棄廢棄並將自php 5.4.0起移除,但是了解魔術引號以後,在閱讀一些php 5.3.0之前原始碼碰到了魔術引號閱讀起來也很順暢。什麼是魔術引...