PHP中magic_quotes_gpc和magic_quotes_runtime的区别、作用和用法_PHP教程
魔术引用发生作用是在传递$_GET,$_POST,$_COOKIE时
1.
条件: magic_quotes_gpc=off
写入数据库的字符串未经过任何过滤处理。从数据库读出的字符串也未作任何处理。
数据: $data=”snow”’’sun” ; (snow和sun之间是四个连续的单引号).
操作: 将字符串:”snow”’’sun” 写入数据库,
结果: 出现sql语句错误,mysql不能顺利完成sql语句,写入数据库失败。
数据库保存格式:无数据。
输出数据格式:无数据。
说明: 对于未经处理的单引号在写入数据库时会使sql语句发生错误。
2.
条件: magic_quotes_gpc=off
写入数据库的字符串经过函数addlashes()处理。从数据库读出的字符串未作任何处理。
数据: $data=”snow”’’sun” ; (snow和sun之间是四个连续的单引号).
操作: 将字符串:”snow”’’sun” 写入数据库,
结果: sql语句顺利执行,数据成功写入数据库
数据库保存格式:snow”’’sun (和输入一样)
输出数据格式:snow”’’sun (和输入一样)
说明: addslashes()函数将单引号转换为’的转义字符使sql语句成功执行,
但’并未作为数据存入数据库,数据库保存的是snow”’’sun 而并不是我们想象的snow’\’’\’sun
3.
条件: magic_quotes_gpc=on
写入数据库的字符串未经过任何处理。从数据库读出的字符串未作任何处理。
数据: $data=”snow”’’sun” ; (snow和sun之间是四个连续的单引号).
操作: 将字符串:”snow”’’sun” 写入数据库,
结果: sql语句顺利执行,数据成功写入数据库
数据库保存格式:snow”’’sun (和输入一样)
输出数据格式:snow”’’sun (和输入一样)
说明: magic_quotes_gpc=on 将单引号转换为’的转义字符使sql语句成功执行,
但’并未作为数据入数据库,数据库保存的是snow”’’sun而并不是我们想象的snow’\’’\’sun。
4.
条件: magic_quotes_gpc=on
写入数据库的字符串经过函数addlashes()处理。从数据库读出的字符串未作任何处理。
数据: $data=”snow”’’sun” ; (snow和sun之间是四个连续的单引号).
操作: 将字符串:”snow”’’sun” 写入数据库,
结果: sql语句顺利执行,数据成功写入数据库
数据库保存格式:snow’\’’\’sun (添加了转义字符)
输出数据格式:snow’\’’\’sun (添加了转义字符)
说明: magic_quotes_gpc=on 将单引号转换为’的转义字符使sql语句成功执行,
addslashes又将即将写入数据库的单引号转换为’,后者的转换被作为数据写入
数据库,数据库保存的是snow’\’’\’sun
总结如下:
1. 对于magic_quotes_gpc=on的情况,
我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。
如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。
2. 对于magic_quotes_gpc=off 的情况
必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出
因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。
补充:
magic_quotes_gpc 作用范围是:WEB客户服务端;作用时间:请求开始时,例如当脚本运行时.
magic_quotes_runtime 作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的;作用时间:每次当脚本访问运行状态中产生的数据
============ magic_quotes_gpc和magic_quotes_runtime的区别和用法 =============
PHP提供两个方便我们引用数据的魔法引用函数magic_quotes_gpc和magic_quotes_runtime,这两个函数如果在php.ini设置为ON的时候,就会为我们引用的数据碰到单引号’和双引号”以及反斜线 是自动加上反斜线,帮我们自动转译符号,确保数据操作的正确运行,可是我们在php不同的版本或者不同的服务器配置下,有的magic_quotes_gpc和magic_quotes_runtime设置为on,有的又是off,所以我们写的程序必须符合on和off两种情况。那么magic_quotes_gpc和magic_quotes_runtime两个函数有什么区别呢?看下面的说明:
magic_quotes_gpc
作用范围是:WEB客户服务端;
作用时间:请求开始是,例如当脚本运行时.
magic_quotes_runtime
作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的;
作用时间:每次当脚本访问运行状态中产生的数据.
所以
magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据
magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据
例子说明:
复制内容到剪贴板
代码:
/* 我们在表单里填写: " 这些符号,如果magic_quotes_gpc没有开启,那么他们不会被反斜杠转义 */
echo 现在通过POST传递过来的值是: ,$_POST[str],
;
if(get_magic_quotes_gpc()) { // 检查magic_quotes_gpc是否打开,如果没有打开,用addslashes进行转义
$str = $_POST[str];
} else {
$str = addslashes($_POST[str]);
}
echo 这里是转义过后的: ,$str,
;
$sql = "INSERT INTO lastnames (lastname) VALUES ($str)";
//=====================================================================================
//-----magic_quotes_gpc只会转义: 通过Get/Post/Cookies获得的数据
//-----magic_quotes_runtime会转义:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的
//=====================================================================================
$data = implode(file(try.php)); // 我们在里面依然写"这几个字符,用来测试
echo 这里是try.php的数据,;
if (get_magic_quotes_runtime()) {
$data = $data;
echo 被系统自带转义的 .$data;
} else {
echo 被addslashes转义了的 .$data = addslashes($data);
}
$sql = "INSERT INTO lastnames (lastname) VALUES ($data)";
echo
SQL语句为:
,$sql;
//---入库都转义了,但是多余了反斜杠,我们要读出来是原来的数据时候使用stripslashes()去掉反斜杠
//---stripslashes()和addslashes()作用相反
?>
最关键的区别是就是上面提到的2点:他们针对的处理对象不同
magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据
magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据
在这里顺便在提几个想关联的函数:
set_magic_quotes_runtime():
设置magic_quotes_runtime值. 0=关闭.1=打开.默认状态是关闭的.可以通过 echo phpinfo(); 查看magic_quotes_runtime
get_magic_quotes_gpc():
查看magic_quotes_gpc值.0=关闭.1=打开.
get_magic_quotes_runtime():
查看magic_quotes_runtime值。0=关闭.1=打开.
注意的是没有 set_magic_quotes_gpc()这个函数,就是不能在程序里面设置magic_quotes_gpc的值。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

瑞波幣(XRP)由Ripple公司創建,用於跨境支付,快速且費用低,適合小額交易支付。註冊錢包和交易所後,可進行購買和存儲。

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

AI可以幫助優化Composer的使用,具體方法包括:1.依賴管理優化:AI分析依賴關係,建議最佳版本組合,減少衝突。 2.自動化代碼生成:AI生成符合最佳實踐的composer.json文件。 3.代碼質量提升:AI檢測潛在問題,提供優化建議,提高代碼質量。這些方法通過機器學習和自然語言處理技術實現,幫助開發者提高效率和代碼質量。

Laravel和Yii的主要區別在於設計理念、功能特性和使用場景。 1.Laravel注重開發的簡潔和愉悅,提供豐富的功能如EloquentORM和Artisan工具,適合快速開發和初學者。 2.Yii強調性能和效率,適用於高負載應用,提供高效的ActiveRecord和緩存系統,但學習曲線較陡。

HTML5帶來了五個關鍵改進:1.語義化標籤提升了代碼清晰度和SEO效果;2.多媒體支持簡化了視頻和音頻嵌入;3.表單增強簡化了驗證;4.離線與本地存儲提高了用戶體驗;5.畫布與圖形功能增強了網頁的可視化效果。

MySQL函數可用於數據處理和計算。 1.基本用法包括字符串處理、日期計算和數學運算。 2.高級用法涉及結合多個函數實現複雜操作。 3.性能優化需避免在WHERE子句中使用函數,並使用GROUPBY和臨時表。

Composer是PHP的依賴管理工具,通過composer.json文件管理項目依賴。 1)解析composer.json獲取依賴信息;2)解析依賴關係形成依賴樹;3)從Packagist下載並安裝依賴到vendor目錄;4)生成composer.lock文件鎖定依賴版本,確保團隊一致性和項目可維護性。
