php的意義,正確理解PHP轉義的真正含義

2021-10-25 21:42:51 字數 1724 閱讀 2099

如何正確的理解php轉義是乙個初學者比較困擾的問題。我們今天為大家簡要的講述了php轉義的具體含義,希望有所幫助。php轉義一直困擾著我, 今天認真的看了一下php手冊, 終於解決了.

在php中預設有乙個"魔術引號"的開關, 如果這個開關開啟, 從外部轉入的$_get, $_get, $cookie都會php轉義.

比如:http://localhost/test.php?test=1'

然後在test.php輸出時自動轉義, 輸出如下:

var_dump($_get['test'];

*****===output*****==

string(3) "1\'"

所示 ' 號被加入了\轉義了.但這裡有乙個問題, 當將這個值輸出到網頁時會看到滿屏的\, 這裡可以使用另乙個函式, stripslashes 可以將\去除.

在手冊中的php轉義意思是說推薦不要開啟"魔術引號" 因為效率問題, 不這也有乙個好處, 就是可以非常安全, 對於我這樣的新手來說.

關閉"魔術引號有三個方法, 因為這個是不可以php執行進關閉的, 也就是說不可以用ini_set().

1. 對php.ini設定.

magic_quotes_gpc = off

magic_quotes_runtime = off

magic_quotes_sybase = off

2. 如果對系統無法修改可以使用 .htaccess

php_flag magic_quotes_gpc off

3. 效率***的php轉義方法

if (get_magic_quotes_gpc()) {

function stripslashes_deep($value)

$value=is_array($value) ?

array_map('stripslashes_deep', $value) :

stripslashes($value);

return $value;

$_post=array_map('stripslashes_deep', $_post);

$_get=array_map('stripslashes_deep', $_get);

$_cookie=array_map('stripslashes_deep', $_cookie);

這裡還要提到乙個關於 sql語句中有like時對%的處理, 因為addslashes對% _ 是不轉義的, 且這兩個字元在別的sql語句也本來也不用轉義的, 所以我編了乙個函式 like_esc($value), 當有like語句時才使用.

對於輸出到網頁的先用stripslashes去\還要用htmlspecialchars轉義一下.

我現在有乙個比較懶的php轉義方法也是對所有轉入的都轉義.

if (!get_magic_quotes_gpc()) {

function addslashes_deep($value)

$value=is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);

return $value;

$_post=array_map('addslashes_deep', $_post);

$_get=array_map('addslashes_deep', $_get);

$_cookie=array_map('addslashes_deep', $_cookie);

點讚 0

如何正確理解PHP的錯誤資訊

我們編寫程式時,無論怎樣小心謹慎,犯錯總是在所難免的。這些錯誤通常會迷惑php編譯器。如果開發人員無法了解編譯器報錯資訊的含義,那麼這些錯誤資訊不僅毫無用處,還會常常讓人感到沮喪。編譯php指令碼時,php編譯器會盡其所能報告它遇到的第乙個問題。這樣就產生乙個問題 只有當錯誤出現時,php才能將它識...

如何正確理解PHP的錯誤資訊

我們編寫程式時,無論怎樣小心謹慎,犯錯總是在所難免的。這些錯誤通常會迷惑php編譯器。如果開發人員無法了解編譯器報錯資訊的含義,那麼這些錯誤資訊不僅毫無用處,還會常常讓人感到沮喪。編譯php指令碼時,php編譯器會盡其所能報告它遇到的第乙個問題。這樣就產生乙個問題 只有當錯誤出現時,php才能將它識...

Linux inode的正確理解

理解inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小儲存單位叫做 扇區 sector 每個扇區儲存512位元組 相當於0.5kb 作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取乙個 塊 block 這種由多個扇區組成的 塊 是檔案訪問的...