php基礎知識(1)-魔術引用
php基礎知識-魔術引用
範例程式碼下載頁http://xieye.iteye.com/blog/1336095(在附件)
魔術引用是指:伺服器對一些字元做自動轉換,以方便程式員的做法。
來源:最開始,php的設計者為了方便程式員將表單資料添加到資料庫,在設定檔中加了一個設定,當選項開啟時,魔術引用啟用,當選項關閉時,魔術引用不啟用。
php.ini大約441行
magic_quotes_gpc = Off
注釋是; Magic quotes for incoming GET/POST/Cookie data.
注釋表明為on時會對進入伺服器的get/post/cookie資料做自動轉換。
1)addslashes函數
介紹魔術引用之前,先介紹addslashes函數
該函數返回字串,該字串為了資料庫查詢語句等的需要在某些字元前加上了反斜線。這些字元是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字元)。
一個使用 addslashes() 的例子是當你要往資料庫中輸入資料時。例如,將名字 O'reilly 插入到資料庫中,這就需要對其進行轉義。大多資料庫使用 \ 作為轉義符:O\'reilly。這樣可以將資料放入資料庫中,而不會插入額外的 \。當 PHP 指令 magic_quotes_sybase 被設定成 on 時,意味著插入 ' 時將使用 ' 進行轉義。
預設情況下,PHP 指令 magic_quotes_gpc 為 on,它主要是對所有的 GET、POST 和 COOKIE 資料自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。
例子 1. addslashes() 樣本
http://localhost/command/peixun/magicquote/1.php
2)測試組態選項magic_quotes_gpc
首先確保magic_quotes_gpc = On,如果是off或0,則需要修改,並重啟apache伺服器。
http://localhost/command/peixun/magicquote/2.php
longs; echo $html; } else { echo $_POST['name1']; }
然後修改magic_quotes_gpc = Off,並重啟apache伺服器,再次測試程式。
最後要說明的是,這些都是學習概念用的,實際的大部分應用中,都將魔術引用關閉,手動的進行轉換。