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

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

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

一、magic_quotes_gpc示例

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

示例1:

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

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

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

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

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

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


說明: 對于未經(jīng)處理的單引號在寫入數(shù)據(jù)庫時會使sql語句發(fā)生錯誤。


示例2:

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

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

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

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

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

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

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


示例3:

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

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

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

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

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

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

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


示例4:

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

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

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

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

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

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

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


總結(jié):


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

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


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

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

1、magic_quotes_gpc?

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

作用時間:請求開始是,例如當(dāng)腳本運行時。

2、magic_quotes_runtime

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

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

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


<?php
//---我們在表單里填寫“'”,“"”,“”這些符號,如果magic_quotes_gpc沒有開啟,那么他們不會被反斜杠轉(zhuǎn)義
echo '現(xiàn)在通過POST傳遞過來的值是:'.$_POST[str].'
'; //---檢查magic_quotes_gpc是否打開,如果沒有打開,用addslashes進行轉(zhuǎn)義 if(get_magic_quotes_gpc()){ $str = $_POST[str]; }else{ $str = addslashes($_POST[str]); } echo '這里是轉(zhuǎn)義過后的:'.$str.''; $sql = "INSERT INTO lastnames(lastname) VALUES ($str)"; // 我們在try.php文件里面依然寫“'”,“"”,“”這幾個字符,用來測試 $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語句為:
'.$sql; //---入庫都轉(zhuǎn)義了,但是多余了反斜杠,我們要讀出來是原來的數(shù)據(jù)時候使用stripslashes()去掉反斜杠 //---stripslashes()和addslashes()作用相反 ?>



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

1、set_magic_quotes_runtime()

設(shè)置magic_quotes_runtime值:0=關(guān)閉,1=打開,默認(rèn)狀態(tài)是關(guān)閉的。可以通過phpinfo()查看magic_quotes_runtime狀態(tài)。

2、get_magic_quotes_gpc()

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

3、get_magic_quotes_runtime()

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

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

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

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

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

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

關(guān)鍵字: php

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

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

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

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

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

關(guān)鍵字: php

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

關(guān)鍵字: php

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

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

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

關(guān)鍵字: php

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

關(guān)鍵字: nginx php

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

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