91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中魔術引號得作用

發布時間:2020-11-12 14:06:59 來源:億速云 閱讀:185 作者:小新 欄目:編程語言

這篇文章主要介紹php中魔術引號得作用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

什么是魔術引號:

魔術引號是程序自動將進入PHP腳本的數據進行轉意的過程。當打開時,所有的 '(單引號),"(雙引號),\(反斜線)和 NULL 字符都會被自動加上一個反斜線進行轉義。和 addslashes() 函數的作用完全相同。

魔術引號指令:

magic_quotes_gpc 影響到 HTTP 請求數據(GET,POST 和 COOKIE)。不能在運行時改變。在 PHP 中默認值為 on。 參見 get_magic_quotes_gpc()。

magic_quotes_runtime 如果打開的話,大部份從外部來源取得數據并返回的函數,包括從數據庫和文本文件,所返回的數據都會被反斜線轉義。該選項可在運行的時改變,在 PHP 中的默認值為 off。 見 set_magic_quotes_runtime() 和 get_magic_quotes_runtime()。

magic_quotes_sybase 如果打開的話,將會使用單引號對單引號進行轉義而非反斜線。此選項會完全覆蓋 magic_quotes_gpc。如果同時打開兩個選項的話,單引號將會被轉義成 ''。而雙引號、反斜線 和 NULL 字符將不會進行轉義。 如何取得其值參見 ini_get()。

魔術引號作用:

當初引入魔術引號是安全方面的考慮,阻止SQL注入,它能幫助php新手在不知不覺中寫成相對更安全的代碼,不過在今天,程序員已經能很好的意識到了這個安全問題,并最終使用數據庫轉移機制或者 prepared 語句來取代魔術引號功能。

魔術引號缺陷:

可移植性 :編程時認為其打開或并閉都會影響到移植性。可以用 get_magic_quotes_gpc() 來檢查是否打開,并據此編程。

性能: 由于并不是每一段被轉義的數據都要插入數據庫的,如果所有進入 PHP 的數據都被轉義的話,那么會對程序的執行效率產生一定的影響。在運行時調用轉義函數(如 addslashes())更有效率。 盡管 php.ini-dist 默認打開了這個選項,但是 php.ini-recommended 默認卻關閉了它,主要是出于性能的考慮。

不便: 由于不是所有數據都需要轉義,在不需要轉義的地方看到轉義的數據就很煩。比如說通過表單發送郵件,結果看到一大堆的 \'。針對這個問題,可以使用 stripslashes() 函數處理。

開關魔術引號:

magic_quotes_gpc 是不能通過ini_set()的來設置的,設置magic_quotes_gpc有三種方法。

1、修改PHP配置文件php.ini。這種方法需要對服務器有管理權限才能修改,如果只是虛擬空間就只能使用后面兩種方法。

; 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的情況下這種才能使用,

php_flag magic_quotes_gpc Off

3、代碼中屏蔽。這種方法的移植性較強,但是效率最低,所以在有服務器管理權限的時候通過修改配置文章的方式關閉magic_quotes_gpc是最好的。

實例代碼:

<?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);
}
?>

總結:

當初是為了阻止SQL注入的需要引入了魔法引號,對于開發者有一定好的好友,但在使用的時候也帶來很多的不便,現在有了更多更好的方案來替代,所以如果還是在php 5.3.0或php 5.3.0之前的版本做開發應該盡量避免使用魔法引號,php 5.4.0以后已經移除了。

以上是php中魔術引號得作用的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

和硕县| 无锡市| 元江| 鄂州市| 长葛市| 福安市| 安阳县| 池州市| 海门市| 陆良县| 马尔康县| 丰城市| 巴林右旗| 墨竹工卡县| 江阴市| 丰都县| 朔州市| 潍坊市| 札达县| 门头沟区| 曲阜市| 神池县| 成安县| 虞城县| 阳山县| 淳化县| 光山县| 漳州市| 利辛县| 建湖县| 凤山市| 于田县| 屏山县| 颍上县| 灵石县| 达孜县| 庆云县| 新民市| 赤水市| 中阳县| 绿春县|