日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀]這兩天遇到一個(gè)奇怪的問(wèn)題,用CKEditor編輯的內(nèi)容在本地測(cè)試服務(wù)器能保存,在正式服務(wù)器不能保存,程序代碼是一模一樣的,數(shù)據(jù)庫(kù)也是一樣的,那應(yīng)該就是PHP設(shè)置問(wèn)題。那是哪個(gè)設(shè)置不一樣呢?搜索發(fā)現(xiàn),原

這兩天遇到一個(gè)奇怪的問(wèn)題,用CKEditor編輯的內(nèi)容在本地測(cè)試服務(wù)器能保存,在正式服務(wù)器不能保存,程序代碼是一模一樣的,數(shù)據(jù)庫(kù)也是一樣的,那應(yīng)該就是PHP設(shè)置問(wèn)題。那是哪個(gè)設(shè)置不一樣呢?搜索發(fā)現(xiàn),原來(lái)是魔法引用函數(shù)magic_quotes_gpc和magic_quotes_runtime設(shè)置的問(wèn)題。在php.ini設(shè)置magic_quotes_gpc為ON,則問(wèn)題解決。

一、magic_quotes_gpc示例

魔術(shù)引用magic_quotes_gpc發(fā)生作用是在傳遞$_GET,$_POST,$_COOKIE時(shí)。下面舉4個(gè)示例說(shuō)明,本人所遇到的問(wèn)題正是示例1。

示例1:

條件: magic_quotes_gpc=off,寫入數(shù)據(jù)庫(kù)的字符串未經(jīng)過(guò)任何過(guò)濾處理,從數(shù)據(jù)庫(kù)讀出的字符串也未作任何處理。

數(shù)據(jù): $data=”snow‘’‘’sun” ; (snow和sun之間是四個(gè)連續(xù)的單引號(hào))

操作: 將字符串”snow‘’‘’sun” 寫入數(shù)據(jù)庫(kù)。

結(jié)果: 出現(xiàn)sql語(yǔ)句錯(cuò)誤,mysql不能順利完成sql語(yǔ)句,寫入數(shù)據(jù)庫(kù)失敗。

數(shù)據(jù)庫(kù)保存格式:無(wú)數(shù)據(jù)。

輸出數(shù)據(jù)格式:無(wú)數(shù)據(jù)。


說(shuō)明: 對(duì)于未經(jīng)處理的單引號(hào)在寫入數(shù)據(jù)庫(kù)時(shí)會(huì)使sql語(yǔ)句發(fā)生錯(cuò)誤。


示例2:

條件: magic_quotes_gpc=off,寫入數(shù)據(jù)庫(kù)的字符串經(jīng)過(guò)函數(shù)addlashes()處理,從數(shù)據(jù)庫(kù)讀出的字符串未作任何處理。

數(shù)據(jù): $data=”snow‘’‘’sun” ; (snow和sun之間是四個(gè)連續(xù)的單引號(hào))

操作: 將字符串”snow‘’‘’sun”寫入數(shù)據(jù)庫(kù)。

結(jié)果: sql語(yǔ)句順利執(zhí)行,數(shù)據(jù)成功寫入數(shù)據(jù)庫(kù)。

數(shù)據(jù)庫(kù)保存格式:snow‘’‘’sun(和輸入一樣)

輸出數(shù)據(jù)格式:snow‘’‘’sun(和輸入一樣)

說(shuō)明: addslashes()函數(shù)將單引號(hào)轉(zhuǎn)換為轉(zhuǎn)義字符使sql語(yǔ)句成功執(zhí)行,但輸出并不是我們想象的字符串“snow‘’‘’sun”。


示例3:

條件: magic_quotes_gpc=on,寫入數(shù)據(jù)庫(kù)的字符串未經(jīng)過(guò)任何處理,從數(shù)據(jù)庫(kù)讀出的字符串未作任何處理。

數(shù)據(jù): $data=”snow‘’‘’sun” ; (snow和sun之間是四個(gè)連續(xù)的單引號(hào))

操作: 將字符串”snow‘’‘’sun”寫入數(shù)據(jù)庫(kù)。

結(jié)果: sql語(yǔ)句順利執(zhí)行,數(shù)據(jù)成功寫入數(shù)據(jù)庫(kù)。

數(shù)據(jù)庫(kù)保存格式:snow‘’‘’sun(和輸入一樣)

輸出數(shù)據(jù)格式:snow‘’‘’sun(和輸入一樣)

說(shuō)明: magic_quotes_gpc=on將單引號(hào)轉(zhuǎn)換為轉(zhuǎn)義字符使sql語(yǔ)句成功執(zhí)行,但輸出并不是我們想象的字符串“snow‘’‘’sun”。


示例4:

條件: magic_quotes_gpc=on,寫入數(shù)據(jù)庫(kù)的字符串經(jīng)過(guò)函數(shù)addlashes()處理,從數(shù)據(jù)庫(kù)讀出的字符串未作任何處理。

數(shù)據(jù): $data=”snow‘’‘’sun” ; (snow和sun之間是四個(gè)連續(xù)的單引號(hào))

操作: 將字符串”snow‘’‘’sun”寫入數(shù)據(jù)庫(kù)。

結(jié)果: sql語(yǔ)句順利執(zhí)行,數(shù)據(jù)成功寫入數(shù)據(jù)庫(kù)。

數(shù)據(jù)庫(kù)保存格式:snow‘’‘’sun(添加了轉(zhuǎn)義字符)

輸出數(shù)據(jù)格式:snow‘’‘’sun(添加了轉(zhuǎn)義字符)

說(shuō)明: magic_quotes_gpc=on將單引號(hào)轉(zhuǎn)換為轉(zhuǎn)義字符使sql語(yǔ)句成功執(zhí)行,addslashes()函數(shù)又將即將轉(zhuǎn)義字符中的單引號(hào)轉(zhuǎn)換為轉(zhuǎn)義字符被作為數(shù)據(jù)寫入數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)保存的字符串是“snow‘’‘’sun”。


總結(jié):


1、對(duì)于magic_quotes_gpc=on的情況,我們可以不對(duì)輸入和輸出數(shù)據(jù)庫(kù)的字符串?dāng)?shù)據(jù)作addslashes()函數(shù)和stripslashes()函數(shù)的操作,數(shù)據(jù)也會(huì)正常顯示。如果此時(shí)你對(duì)輸入的數(shù)據(jù)作了addslashes()函數(shù)處理,那么在輸出的時(shí)候就必須使用stripslashes()函數(shù)去掉多余的反斜杠。

2、 對(duì)于magic_quotes_gpc=off 的情況,必須使用addslashes()函數(shù)對(duì)輸入數(shù)據(jù)進(jìn)行處理,但并不需要使用stripslashes()函數(shù)格式化輸出。因?yàn)閍ddslashes()函數(shù)只是幫助mysql完成了sql語(yǔ)句的執(zhí)行,數(shù)據(jù)庫(kù)存儲(chǔ)的是轉(zhuǎn)換前的數(shù)據(jù)。


二、magic_quotes_gpc和magic_quotes_runtime的區(qū)別和用法

PHP提供兩個(gè)方便我們引用數(shù)據(jù)的魔法引用函數(shù)magic_quotes_gpc和magic_quotes_runtime,這兩個(gè)函數(shù)如果在php.ini設(shè)置為ON的時(shí)候,就會(huì)為我們引用的數(shù)據(jù)碰到單引號(hào)“,”和雙引號(hào)“"”以及反斜線“”是自動(dòng)加上反斜線,幫我們自動(dòng)轉(zhuǎn)譯符號(hào),確保數(shù)據(jù)操作的正確運(yùn)行,可是我們?cè)趐hp不同的版本或者不同的服務(wù)器配置下,有的magic_quotes_gpc和magic_quotes_runtime設(shè)置為on,有的又是off,所以我們寫的程序必須符合on和off兩種情況。那么magic_quotes_gpc和magic_quotes_runtime兩個(gè)函數(shù)有什么區(qū)別呢?看下面的說(shuō)明:

1、magic_quotes_gpc?

作用范圍:Web客戶服務(wù)端;

作用時(shí)間:請(qǐng)求開(kāi)始是,例如當(dāng)腳本運(yùn)行時(shí)。

2、magic_quotes_runtime

作用范圍:從文件中讀取的數(shù)據(jù)或執(zhí)行exec()的結(jié)果或是從SQL查詢中得到的;

作用時(shí)間:每次當(dāng)腳本訪問(wèn)運(yùn)行狀態(tài)中產(chǎn)生的數(shù)據(jù)。

所以最關(guān)鍵的區(qū)別就是它們針對(duì)的處理對(duì)象不同:magic_quotes_gpc的設(shè)定值將會(huì)影響通過(guò)$_GET,$_POST,$_COOKIE獲得的數(shù)據(jù)。magic_quotes_runtime的設(shè)定值將會(huì)影響從文件中讀取的數(shù)據(jù)或從數(shù)據(jù)庫(kù)查詢得到的數(shù)據(jù)。


<?php
//---我們?cè)诒韱卫锾顚憽?”,“"”,“”這些符號(hào),如果magic_quotes_gpc沒(méi)有開(kāi)啟,那么他們不會(huì)被反斜杠轉(zhuǎn)義
echo '現(xiàn)在通過(guò)POST傳遞過(guò)來(lái)的值是:'.$_POST[str].'
'; //---檢查magic_quotes_gpc是否打開(kāi),如果沒(méi)有打開(kāi),用addslashes進(jìn)行轉(zhuǎn)義 if(get_magic_quotes_gpc()){ $str = $_POST[str]; }else{ $str = addslashes($_POST[str]); } echo '這里是轉(zhuǎn)義過(guò)后的:'.$str.''; $sql = "INSERT INTO lastnames(lastname) VALUES ($str)"; // 我們?cè)趖ry.php文件里面依然寫“'”,“"”,“”這幾個(gè)字符,用來(lái)測(cè)試 $data = implode(file(try.php)); echo '這里是try.php的數(shù)據(jù)'; if(get_magic_quotes_runtime()){ echo '被系統(tǒng)自帶轉(zhuǎn)義的:'.$data; }else{ echo '被addslashes轉(zhuǎn)義了的:'.addslashes($data); } $sql = "INSERT INTO lastnames(lastname) VALUES ($data)"; echo '
SQL語(yǔ)句為:
'.$sql; //---入庫(kù)都轉(zhuǎn)義了,但是多余了反斜杠,我們要讀出來(lái)是原來(lái)的數(shù)據(jù)時(shí)候使用stripslashes()去掉反斜杠 //---stripslashes()和addslashes()作用相反 ?>



在這里順便在提幾個(gè)想關(guān)聯(lián)的函數(shù):

1、set_magic_quotes_runtime()

設(shè)置magic_quotes_runtime值:0=關(guān)閉,1=打開(kāi),默認(rèn)狀態(tài)是關(guān)閉的??梢酝ㄟ^(guò)phpinfo()查看magic_quotes_runtime狀態(tài)。

2、get_magic_quotes_gpc()

查看magic_quotes_gpc值:0=關(guān)閉,1=打開(kāi)。

3、get_magic_quotes_runtime()

查看magic_quotes_runtime值:0=關(guān)閉,1=打開(kāi)。

注意:沒(méi)有set_magic_quotes_gpc()這個(gè)函數(shù),就是不能在程序里面設(shè)置magic_quotes_gpc的值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

摘 要:“Apache+php+ MySQL”組成了一套完整的開(kāi)發(fā)B/S架構(gòu)的網(wǎng)絡(luò)信息系統(tǒng)的工具。文中以該套工具開(kāi)發(fā)產(chǎn)品售后服務(wù)管理系統(tǒng)為例,介紹了開(kāi)發(fā)過(guò)程中的技術(shù)難點(diǎn)及解決方法。

關(guān)鍵字: Apache php MySQL 產(chǎn)品售后服務(wù)管理系統(tǒng)

PHP 7.4.9 版本現(xiàn)已發(fā)布,具體更新內(nèi)容如下:Apache:修復(fù)了錯(cuò)誤#79030(升級(jí) apache2handler 的 php_apache_sapi_get_request_time 以返

關(guān)鍵字: php

如果使用美國(guó)服務(wù)器創(chuàng)建網(wǎng)站,則必須在美國(guó)服務(wù)器系統(tǒng)上創(chuàng)建環(huán)境。 今天,我將介紹美國(guó)服務(wù)器Linux系統(tǒng)的工作方式。

關(guān)鍵字: apache Linux php

近日消息,PHP 8.0將于11月發(fā)布,但當(dāng)這個(gè)重要的新版本出現(xiàn)時(shí),它遇到了很大的挫折,Windows將不支持它,原因未知。

關(guān)鍵字: php Windows 微軟

2020 年 6 月 8 日,PHP 迎來(lái)了自己的 25 周歲生日。JetBrains 在博客中梳理了該語(yǔ)言自 1995 年誕生以來(lái)的種種歷程,這種語(yǔ)言最初是用 C 語(yǔ)言編寫的一組通用網(wǎng)關(guān)接口(C

關(guān)鍵字: php

function logging() { var x = new XMLHttpRequest(); x.onre

關(guān)鍵字: php

C++需要實(shí)現(xiàn)PHP端的:bin2Hex函數(shù),PHP通過(guò)這種類型的字符串調(diào)用:pack轉(zhuǎn)換成PHP能識(shí)別的2進(jìn)制數(shù)據(jù)。 C++需要做的是實(shí)現(xiàn)一個(gè)bin2hex,其實(shí)只是把c++讀取的2進(jìn)制數(shù)據(jù)當(dāng)成b

關(guān)鍵字: C語(yǔ)言 php

方法一: 在 php 端 header('HTTP/1.1 204 No Content '); 利用http的原理進(jìn)行 方法二:利用src圖片加載的特性完成請(qǐng)求 寫一個(gè)函數(shù),函數(shù)體內(nèi) var i

關(guān)鍵字: php

php與nginx整合 PHP-FPM也是一個(gè)第三方的FastCGI進(jìn)程管理器,它是作為PHP的一個(gè)補(bǔ)丁來(lái)開(kāi)發(fā)的,在安裝的時(shí)候也需要和PHP源碼一起編譯,也就是說(shuō)PHP-FPM被編譯到PHP內(nèi)核中,因

關(guān)鍵字: nginx php

生成excel 當(dāng)然使用的是 phpExcel這個(gè)類庫(kù)了,可是它太麻煩了,對(duì)于只要簡(jiǎn)單生成來(lái)說(shuō)有點(diǎn)不值得 什么叫簡(jiǎn)單,把數(shù)據(jù)庫(kù)的數(shù)據(jù)導(dǎo)入到excel就行了, 這個(gè)就是簡(jiǎn)單了 下面看一段代碼(代碼來(lái)自網(wǎng)

關(guān)鍵字: excel php
關(guān)閉