php get_magic_quotes_gpc()函數是有什麼作用?
前面給講解php stripslashes()函數和addslashes()函數的差別的時候,裡面提到了get_magic_quotes_gpc()函數,那麼這個函數是幹嘛的呢?本章將介紹get_magic_quotes_gpc()
函數的一些說明及其至於事項。
get_magic_quotes_gpc函數的作用是:用來判斷是否為使用者提供的資料增加斜線了,這個在php.ini設定檔中,下面就詳細介紹一下get_magic_quotes_gpc()函式。
get_magic_quotes_gpc函數介紹
取得 PHP 環境變數 magic_quotes_gpc 的值,屬於 PHP 系統功能。
語法:
long get_magic_quotes_gpc(void);
回傳值: 長整數
本函數取得PHP 環境配置的變數magic_quotes_gpc (GPC, Get/Post/Cookie) 值。傳回 0 表示關閉本功能;傳回 1 表示本功能開啟。當magic_quotes_gpc 打開時,所有的 ' (單引號), " (雙引號), (反斜線) and 空字元會自動轉為含有反斜線的溢出字元。
在php的設定檔中,有個布林值的設置,就是magic_quotes_runtime。溢出字元加反斜線,那麼字串中就會有多個反斜線,所以這時就要用set_magic_quotes_runtime()與get_magic_quotes_runtime()設定和偵測php.ini檔案中magic_quotes_runtime狀態。為了讓自己的程式不管伺服器是什麼設定都能正常執行。關掉該設定。可以用get_magic_quotes_gpc()檢測系統設定。如果沒有開啟這項設置,可以使用addslashes()函數添加,它的功能就是給資料庫查詢語句等的需要在某些字元前加上了反斜線。這些字元是單引號(')、雙引號(")、反斜線(\)與NUL(NULL 字元)。
PS:
PHP 5.3.0 起廢棄並將自PHP 5.4.0 起移除。程式錯誤而已了。範例
php 判斷是否開啟get_magic_quotes_gpc功能了,以方便我們是否決定使用addslashes這個函數了。
function SQLString($c, $t){ $c=(!get_magic_quotes_gpc())?addslashes($c):$c; switch($t){ case 'text': $c=($c!='')?"'".$c."'":'NULL'; break; case 'search': $c="'%%".$c."%%'"; break; case 'int': $c=($c!='')?intval($c):'0'; break; } return $c; }利用get_magic_quotes_gpc()預防資料庫攻擊的正確做法程式碼如下
<?php function check_input($value) { // 去除斜杠 if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 如果不是数字则加引号 if (!is_numeric($value)) { $value = “‘” . mysql_real_escape_string($value) . “‘”; } return $value; } $con = mysql_connect(“localhost”, “hello”, “321″); if (!$con) { die(‘Could not connect: ‘ . mysql_error()); } // 进行安全的 SQL $user = check_input($_POST['user']); $pwd = check_input($_POST['pwd']); $sql = “SELECT * FROM users WHERE user=$user AND password=$pwd”; mysql_query($sql); mysql_close($con); ?>總結:get_magic_quotes_gpc()函數的作用就是得到環境變數magic_quotes_gpc的值。了magic_quotes_gpc這個選項,所以PHP6中這個函數已經不存在了。詳解
2.
php stripslashes()函數與addslashes()函數的區別實例詳解以上是php get_magic_quotes_gpc()函數的用法簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!