PHP中 magic_quotes_gpc 和 magic_quotes_runtime 區別及其反斜線轉義問題

php中關于反斜線轉義:

php中數據的魔法引用函數 magic_quotes_gpc? 或 magic_quotes_runtime??? ?
設置為on時,當數據遇到 單引號' 和 雙引號" 以及 反斜線\ NULL時自動加上反斜線,進行自動轉義。

注釋:默認情況下,PHP 指令 magic_quotes_gpc 為 on,對所有的 GET、POST 和 COOKIE 數據自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字符串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。

magic_quotes_gpc? 和 magic_quotes_runtime二者的區別:
magic_quotes_gpc

作用范圍是:WEB客戶服務端;
作用時間:請求開始的時候,例如當腳本運行時。

get_magic_quotes_gpc — 獲取當前 magic_quotes_gpc 的配置選項設置記住,嘗試在運行時設置 magic_quotes_gpc 將不會生效,所以沒有set_magic_quotes_gpc函數。?

magic_quotes_runtime
此函數是該函數的別名: set_magic_quotes_runtime()?
作用范圍:從文件中讀取的數據或執行exec()的結果或是從SQL查詢中得到的;
作用時間:每次當腳本訪問運行狀態中產生的數據。

由此我們可以看出:
magic_quotes_gpc的設定值將會影響通過GET、POST 和 COOKIE獲得的數據
magic_quotes_runtime的設定值將會影響從文件中讀取的數據或從數據庫查詢得到的數據

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


下面是幾個相關的函數:

set_magic_quotes_runtime():
設置magic_quotes_runtime值. 0或者false代表“關閉”.1或者true代表“打開”.默認狀態是關閉的.可以通過 echo phpinfo()查看magic_quotes_runtime的當前狀態。
get_magic_quotes_gpc():
查看magic_quotes_gpc值.0或者false代表“關閉”.1或者true代表“打開”。
get_magic_quotes_runtime():
查看magic_quotes_runtime值。0或者false代表“關閉”.1或者true代表“打開”。
需要特別注意的是不存在set_magic_quotes_gpc()這個函數,就是不能在程序里面設置magic_quotes_gpc的值。

由于兩個值的設置問題,會給編程時造成部分混淆或者會多加一次轉義,針對這種情況,需要在程序開始的時候進行設置和判斷,或者默認配置
這兩個值都關閉。轉義部分通過程序來執行。

保證數據插入數據時正常 通常會使用 addslashes 這個來處理, 數據讀出時多用 stripslashes 來去掉加的反斜杠

php中類似的字符轉換或者置取的函數
ini_get??????????????????????????? 獲取一些配置選項的值
addslashes???????????????????????? 指定的預定義字符前添加反斜杠
stripslashes??????????????????????? 刪除由 addslashes() 函數添加的反斜杠
htmlspecialchars??????????????? 把一些預定義的字符轉換為 HTML 實體
htmlspecialchars_decode? 把一些預定義的 HTML 實體轉換為字符
html_entity_decode()??????? 把 HTML 實體轉換為字符
htmlentities()???????????????????? 把字符轉換為 HTML 實體

驗證字符轉義的小例子,:

<?phpecho "<pre>";print_r ($_SERVER);//獲取php.ini里面的magic quotes gpc配置。這個開啟后會把變量值自動加上\來轉義一些字符echo get_magic_quotes_gpc(),PHP_EOL;         // 1echo $_GET['lastname'];             // O\'reillyecho addslashes($_GET['lastname']); // O\\\'reillyecho $_GET['lastname']."000"."\n\r";if (get_magic_quotes_gpc()) {$lastname = stripslashes($_GET['lastname']);echo $lastname."111"."<br />";}else {$lastname = $_GET['lastname'];echo $lastname."222"."<br />";}?>

?去轉義小例子:

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

?

轉載于:https://www.cnblogs.com/Life-Record/p/5576304.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374541.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374541.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374541.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JDK中的設計模式

Zen的JCG合作伙伴Brian Du Preez 是IT藝術領域的合作伙伴&#xff0c;他在收集JDK中最常見的設計模式方面做得非常出色。 模式列表確實令人印象深刻且很長&#xff0c;所以讓我們不再ba不休&#xff0c;向您展示它。 前幾天&#xff0c;我在企業Dev中看到了Rob Williams Brain …

414. 第三大的數

給你一個非空數組&#xff0c;返回此數組中 第三大的數 。如果不存在&#xff0c;則返回數組中最大的數 方法一 首先將數組排序&#xff0c;然后通過集合去除重復的元素&#xff0c;最后進行一次判斷&#xff0c;選擇第三大元素還是最大元素 class Solution {public int thir…

bufferevent 與 socket

http://blog.sina.com.cn/s/blog_56dee71a0100qx4s.html 很多時候&#xff0c;除了響應事件之外&#xff0c;應用還希望做一定的數據緩沖。比如說&#xff0c;寫入數據的時候&#xff0c;通常的運行模式是&#xff1a; l 決定要向連接寫入一些數據&#xff0c;把數據放入到緩沖…

Codeforces Round #102 (Div. 1) A. Help Farmer 暴力分解

A. Help Farmer題目連接&#xff1a; http://www.codeforces.com/contest/142/problem/A Description Once upon a time in the Kingdom of Far Far Away lived Sam the Farmer. Sam had a cow named Dawn and he was deeply attached to her. Sam would spend the whole summe…

電力電子、電機控制系統的建模和仿真_清華團隊研發,首款國產電力電子仿真軟件來啦~已捐贈哈工大、海工大、清華使用!...

點擊上方電氣小青年&#xff0c;關注并星標由于微信改版&#xff0c;只有星標才能及時看到我們的消息哦━━━━━━推薦閱讀&#xff1a;《膜拜大神&#xff01;清華大學電機系2021年接收推薦免試直碩(博)生擬錄取名單公示&#xff01;》《滴滴程序員年薪80萬被鄙視不如在二本…

JVM如何處理鎖

當我們談論最新版本的Sun Hotspot Java虛擬機1.6時&#xff0c;當您嘗試從java.util.concurrent.locks.Lock實現獲取鎖或輸入同步塊時&#xff0c;JVM將執行以下三種鎖類型&#xff1a; 有偏見的 &#xff1a;有時即使在并發系統中也沒有爭用&#xff0c;并且在這種情況下&…

基于node.js及express實現中間件,實現post、get

首先&#xff0c;當然是有必要的環境&#xff0c;安裝node&#xff0c;這個我就不多說了。 依賴模塊&#xff1a; "express": "^4.13.4", "request": "^2.72.0", "body-parser": "^1.13.3",頁面 $.ajax({type: &q…

可視化分析之圖表選擇

轉載于:https://www.cnblogs.com/yymn/p/4783631.html

定義并調用函數輸出 fibonacci 序列_科學網—Zmn-0351 薛問天:再談數學概念的定義,評新華先生《0345》...

Zmn-0351 薛問天&#xff1a;再談數學概念的定義&#xff0c;評新華先生《0345》【編者按。下面是薛問天先生發來的文章。是對《Zmn-0345》新華先生文章的評論。現在發布如下&#xff0c;供網友們共享。請大家關注并積極評論。另外本《專欄》重申&#xff0c;這里純屬學術討論&…

Java和內存泄漏

總覽 術語“內存泄漏”在Java中的使用方式不同于在其他語言中使用的方式。 通用術語中的“內存泄漏”是什么意思&#xff0c;在Java中如何使用&#xff1f; 維基百科的定義 當計算機程序消耗內存但無法將其釋放回操作系統時&#xff0c;就會發生計算機科學中的內存泄漏&#x…

453. 最小操作次數使數組元素相等

給你一個長度為 n 的整數數組&#xff0c;每次操作將會使 n - 1 個元素增加 1 。返回讓數組所有元素相等的最小操作次數。 class Solution {public int minMoves(int[] nums) {int res 0;int sum 0;int n nums.length;for(int i 0;i<n;i){sum nums[i];}res sum - min…

第二章 TCP/IP 基礎知識

第二章 TCP/IP 基礎知識 TCP/IP transmission control protocol and ip internet protocol 是互聯網眾多通信協議中最為著名的。 2.2 TCP/IP 的標準化 2.2.2 TCP/IP 標準化精髓 TCP/IP 協議始終具有很強的實用性。 相比于TCP/IP &#xff0c;OSI 之所以未能達到普及&#xff0…

CSS太陽月亮地球三角戀旋轉效果

純粹玩一下&#xff0c;好像沒有什么實際的卵用&#xff0c;but&#xff0c;純玩買不了上當&#xff0c;純玩買不了受騙。。。。。。。。 地月旋轉的一個css效果&#xff0c;無聊玩玩&#xff0c;可以復制到記事本試試 <!DOCTYPE html><html lang"en">&l…

gorm preload 搜索_LeetCode刷題筆記|95:不同的二叉搜索樹 II

題目描述給定一個整數 n&#xff0c;生成所有由 1 ... n 為節點所組成的 二叉搜索樹 。示例輸入&#xff1a;3輸出&#xff1a;[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解釋&#xff1a;以上的輸出對應以下 5 種不同結構的二叉搜索樹&#xf…

Java初學者指南

Java編程的第一步。 對于Java中的入門教程&#xff0c;請參閱Sun的官方幫助這里 除了核心語言外&#xff0c;還有幾種技術和API 介紹。 我們建議首先閱讀涵蓋 基礎知識&#xff0c;并繼續其余的教程。 我們建議&#xff1a; 保持代碼簡單易讀 拆分邏輯組件&#xff08;類…

Javascript中Promise對象的實現

http://segmentfault.com/a/1190000000684654 http://www.infoq.com/cn/news/2011/09/js-promise/轉載于:https://www.cnblogs.com/zuiyirenjian/p/4787864.html

字符串分割與存入List集合

List<string> namelist new List<string>(); string[] namejh null; string name "張三李四王五"; 第一步&#xff1a;將三個名字分離出來 namejh name.Split("".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); namelist new Li…

GTJ2018如何導出全部工程量_如何成為優秀的造價員?廣聯達編制內刊手冊,造價員算量高手秘籍...

如何成為優秀的造價員&#xff1f;廣聯達編制內刊手冊&#xff0c;造價員算量高手秘籍[高手秘籍]是廣聯達課程編制委員會暨直播委員會精心打造的&#xff0c;能夠“讓您深入理解軟件計算、設置等原理,遇到問題有處理思路,以常見問題為導向&#xff0c;重點進行原因分析&#xf…

帶有Spring,Hibernate,Akka,Twitter Bootstrap,Apache Tiles和jQuery的Maven Web項目Kickstarter代碼庫...

我很高興將第二個項目上傳到GitHub&#xff0c;以幫助人們盡快開始Java Web App開發。 我正在與Apache License 2.0共享此代碼。 這是相同的網址&#xff1a; https://github.com/ykameshrao/spring-hibernate-springdata-springmvc-maven-project-framework 該項目包括以下部…

git項目添加.gitigore文件

以前一直沒有注意這個文件&#xff0c;最近讀到了黃勇的《架構探險》&#xff0c;覺得這個文件還是很有用的。 .gitigore文件可以自己配置。 我使用的是書中所用的配置&#xff0c;簡潔明了。 # Maven # target/#log# logs/# IDEA # .idea/ *.iml# Eclipse # .settings/ .metad…