標題:
[SQL與PHP]
關閉PHP魔術引號(Magic Quote)
[打印本頁]
作者:
gswdkimo
時間:
2011-7-5 19:47
標題:
關閉PHP魔術引號(Magic Quote)
PHP的魔術引號給程序編寫帶來了一丁點方便,但卻嚴重影響的程序的可移植性,在開啟magic_quotes_gpc的環境下寫的程序到沒開啟的環境下就有可能出現錯誤。所以通常情況下,我們會關閉magic_quotes_gpc以避免它帶來的問題。
手冊裡介紹了三種方法,在些整理一下:
1 修改PHP配置文件php.ini
這種方法只適於自己有權管理服務器的情況下,如果用的虛擬空間,那就只能採用後兩條方法。
在PHP配置文件php.ini中將magic_quotes_gpc、magic_quotes_runtime、magic_quotes_sybase全部設為off。如下所示:
; Magic quotes
;
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape 『 with 」 instead of \』).
magic_quotes_sybase = Off
2 利用.htaccess文件
該方法只在服務器支持htaccess的情況下,現在的服務器一般都會支持的
在程序目錄下.htaccess文件中增加下面一句:
php_flag magic_quotes_gpc Off
3 在代碼中屏蔽
該方法是移植性最強的,不用考慮服務器的配置,只要支持PHP就可以使用。
在所有PHP文件開始處增加下面代碼
<?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);
$_REQUEST = array_map('stripslashes_deep', $_REQUEST);
}
?>
複製代碼
歡迎光臨 資訊家電班NO7 (http://imce07.freehostia.com/forums/)
Powered by Discuz! 7.2