織夢中預定義的超全局數組處理,織夢教程
導讀:織夢教程織夢教程當我們寫好表單后,提交到對應php文件進行處理,在處理前首先要接收數據,然后對數據處理,以申請友情鏈接為例子。 友情鏈接申請界面如下圖所示: 當我們提交flindede下瓻模板下載織夢模板下載。
當我們寫好表單后,提交到對應php文件進行處理,在處理前首先要接收數據,然后對數據處理,以申請友情鏈接為例子。
友情鏈接申請界面如下圖所示:
當我們提交flink.php后,正常情況是flink.php會用超全局數組$_POST來接收數據,但是打開flink.php文件,我們完全找不到$_POST,難道織夢不用$_POST,織夢也是用php開發的,所以,收集數據必定會用到$_POST,但是如果你仔細分析織夢源碼的話,你會發現每個對表單提交過來的數據進行處理的文件,都找不到$_POST或$_GET等超全局數據。
以前剛學習php時,看織夢系統源碼,非常費事,就拿這樣剛開始時讓我糾結了好久,等看多了織夢系統源碼,才知道,原來織夢把這些超全局變數組,都做了處理,這樣以后我們無需每次處理表單,都要多寫$_POST或$_GET等多余的代碼了。
我們看一下織夢里面的這個flink.php文件,找到下面幾行:
$msg = htmlspecialchars($msg);
$email = htmlspecialchars($email);
$webname = htmlspecialchars($webname);
$url = htmlspecialchars($url);
$logo = htmlspecialchars($logo);
$typeid = intval($typeid);
織夢直接用類似$msg來收集表單來的數據,正常應當是$msg = $_POST['msg'],現在變成了$msg = $msg(htmlspecialchars()這個函數的功能是把一些預定義的字符轉換為 HTML 實體,這與超全局變量沒有關織夢模板免費下裁系),是不省了不少事,也許大家會問,也省不了多少,這只是一個文件,而織夢時面的處理表單的文件,不止數十個,加起來就量就非常大了,這樣不僅可以減少代碼,而且,還省不少事。
這個功能是如何實現的?織夢是在入口文件common.inc.php里面定義的,找到這個文件,代碼如下:
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v)
{
if($_k == 'nvarname') ${$_k} = $_v;
else ${$_k} = _RunMagicQuotes($_v);
}
}
首先遍歷聲明的數組Array('_GET','_POST','_COOKIE'),再通過第二次循環遍歷,就可以實現了上面的提到簡略形式,其中$$_request正是類似的$_GET,$POST,$_COOKIE。$$_request是可變變量,在下面的教程里講到。在這二又重循環中用到了一個函數_RunMagicQuotes(),還有一個函數CheckRequest()。
不僅這個超全局變量了這種簡略思想,在上傳文件收集上傳信息的$FILES也用了這種思想,作為一個技術員,可以好好研究一下織夢一些設計思想,織夢模板安裝一定會對我們大有用處。
擴展學習:
要看明白織夢對預定義的超全局數組(預定義的超全局數組也叫預定義的超全局變量)是如何處理優化的,首先得明白這些超全局數組$_GET、$_POST、$_REQUEST、$GLOBAL、$COOKIE、$SESSION等是什么意思,它們是如何運作的?只有把這些基本的概念弄明白了,才能對織夢里面的超全局數組的應用有更好的把握。
要知道預定義全局數組首先要知道什么是變量、什么是局部變量、什么是全局變量。
變量常識:
當我們聲明了一個變量,php就會給變量分配一個空間,這個空間包括變量名、變量的地址和存儲變量值空間,例如,聲明變量$age=10,在棧內存中示意圖如下所示。
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-07-20 ,文章織夢中預定義的超全局數組處理,織夢教程主要講述夢中,數組,織夢網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_31666.html