日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php框架 > ThinkPHP > ThinkPHP3.1快速入門(mén)(5)變量

ThinkPHP3.1快速入門(mén)(5)變量

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-04-08 02:20:17 閱讀次數(shù):4203次
本篇我們來(lái)學(xué)習(xí)如何在ThinkPHP中使用變量和對(duì)變量進(jìn)行過(guò)濾。
在Web開(kāi)發(fā)過(guò)程中,我們經(jīng)常需要獲取系統(tǒng)變量或者用戶提交的數(shù)據(jù),這些變量數(shù)據(jù)錯(cuò)綜復(fù)雜,而且一不小心就容易引起安全隱患,但是如果利用好ThinkPHP提供的變量獲取功能,就可以輕松的獲取和駕馭變量了。
如果你使用的是3.1.3以上版本,那么可以直接參考新版的I函數(shù)用法,基本上涵蓋了本章的內(nèi)容。

獲取變量

首先,我們來(lái)談下如何獲取變量。
第一種方式:傳統(tǒng)獲取方式
你仍然可以在開(kāi)發(fā)過(guò)程中使用傳統(tǒng)方式獲取各種系統(tǒng)變量,例如:
$id = $_GET['id']; // 獲取get變量
$name = $_POST['name'];  // 獲取post變量
$value = $_SESSION['var']; // 獲取session變量
$name = $_COOKIE['name']; // 獲取cookie變量
$file =  $_SERVER['PHP_SELF']; // 獲取server變量
不建議直接使用傳統(tǒng)方式獲取,因?yàn)闆](méi)有統(tǒng)一的安全處理機(jī)制,后期如果調(diào)整的話,改起來(lái)會(huì)比較麻煩。
第二種方式:使用Action類提供的動(dòng)態(tài)方法
系統(tǒng)的Action類提供了對(duì)系統(tǒng)變量的增強(qiáng)獲取方法,包括對(duì)GET、POST、PUT、REQUEST、SESSION、COOKIE、SERVER和GLOBALS參數(shù),除了獲取變量值外,還提供變量過(guò)濾和默認(rèn)值支持,用法很簡(jiǎn)單,只需要在Action中調(diào)用下面方法:
$id = $this->_get('id'); // 獲取get變量
$name = $this->_post('name'); // 獲取post變量
$value = $this->_session('var'); // 獲取session變量
$name = $this->_cookie('name'); // 獲取cookie變量
$file =  $this->_server('PHP_SELF'); // 獲取server變量
調(diào)用格式為:
$this->方法名("變量名",["過(guò)濾方法"],["默認(rèn)值"])
方法名可以支持:
方法名 含義
_get 獲取GET參數(shù)
_post 獲取POST參數(shù)
_param 自動(dòng)判斷請(qǐng)求類型獲取GET、POST或者PUT參數(shù)
_request 獲取REQUEST參數(shù)
_put 獲取PUT參數(shù)
_session 獲取$_SESSION參數(shù)
_cookie 獲取$_COOKIE參數(shù)
_server 獲取$_SERVER參數(shù)
_globals 獲取$GLOBALS參數(shù)
變量名:(必須)是要獲取的系統(tǒng)變量的名稱
過(guò)濾方法:(可選)可以用任何的內(nèi)置函數(shù)或者自定義函數(shù)名,如果沒(méi)有指定的話,采用默認(rèn)的htmlspecialchars函數(shù)進(jìn)行安全過(guò)濾(由DEFAULT_FILTER 參數(shù)配置),參數(shù)就是前面方法名獲取到的值,也就是說(shuō)如果調(diào)用:
$this->_get("name");
最終調(diào)用的結(jié)果就是 htmlspecialchars($_GET["name"]),如果要改變過(guò)濾方法,可以使用:
$this->_get("name","strip_tags");
默認(rèn)值:(可選)是要獲取的參數(shù)變量不存在的情況下設(shè)置的默認(rèn)值,例如:
$this->_get("id","strip_tags",0);
如果$_GET["id"] 不存在的話,會(huì)返回0。
如果沒(méi)有設(shè)置任何默認(rèn)值的話,系統(tǒng)默認(rèn)返回NULL。
其他方法的用法類似。
看起來(lái)好像差別不大,但是有一個(gè)明顯的優(yōu)勢(shì),就是如果我需要增加或者改變對(duì)這些變量做統(tǒng)一的過(guò)濾,一般不需要修改變量獲取的代碼,只是在項(xiàng)目配置文件中增加一個(gè)配置參數(shù)即可,例如:
'DEFAULT_FILTER'=>'strip_tags'
對(duì)所有的采用動(dòng)態(tài)方式獲取的變量使用strip_tags方法進(jìn)行統(tǒng)一過(guò)濾,也可以支持多個(gè)過(guò)濾方法,例如:
'DEFAULT_FILTER'=>'strip_tags,htmlspecialchars'
表示先進(jìn)行strip_tags過(guò)濾,然后再進(jìn)行htmlspecialchars過(guò)濾。
如果你在獲取某個(gè)變量的時(shí)候 需要自定義過(guò)濾方法,則可以改成:
$name = $this->_post('content','trim,strip_tags'); // 獲取post變量并過(guò)濾
如果你在項(xiàng)目配置中設(shè)置了統(tǒng)一的變量過(guò)濾方法,但是希望對(duì)某些變量不進(jìn)行過(guò)濾,則可以用:
$name = $this->_post('id','',0);
如果你的參數(shù)可能會(huì)來(lái)自于多個(gè)提交方式,那么可以使用_param方法來(lái)更方便的獲取,例如:
$this->_param('id');
當(dāng)前為get方式提交的時(shí)候,就等效于
$this->_get('id');
當(dāng)前為post方式提交的時(shí)候,就等效于
$this->_post('id');
如果為put方式提交的話,就等效于
$this->_put('id');
其優(yōu)點(diǎn)自然很明顯,同一個(gè)方法可以接受不同提交類型的變量,不用手動(dòng)做太多的判斷再來(lái)獲取不同的參數(shù)了。

獲取URL參數(shù)

在某些情況下面,我們還有一種獲取URL參數(shù)的特殊需求,一般來(lái)說(shuō),獲取URL參數(shù)是采用get變量的方式就夠用了,但是對(duì)于我們定制過(guò)的URL,或者采用了路由的情況下面,URL的參數(shù)可能會(huì)沒(méi)有規(guī)律,這個(gè)時(shí)候,我們可以采用另外一種方式來(lái)獲取。
例如,當(dāng)前的URL地址是:
http://localhost/index.php/news/hello_world/thinkphp
我們要獲取其中的參數(shù),可以用:
$this->_param(0); // 獲取news
$this->_param(1); // 獲取hello_world
$this->_param(2); // 獲取thinkphp
不過(guò)_param(數(shù)字) 方式的變量獲取,僅對(duì)PATHINFO模式URL地址有效

變量過(guò)濾

前面我們已經(jīng)了解了如何使用Action類提供的方法來(lái)進(jìn)行變量獲取和過(guò)濾了,但是在沒(méi)有調(diào)用這些動(dòng)態(tài)方法的前提下,我們?cè)趺磥?lái)進(jìn)行數(shù)據(jù)過(guò)濾呢?
ThinkPHP還提供了兩種方式來(lái)進(jìn)行數(shù)據(jù)過(guò)濾操作:
第一:配置全局的變量過(guò)濾
這種情況是針對(duì)一些會(huì)在多使用的情況,可以通過(guò)配置全局過(guò)濾 簡(jiǎn)化操作,例如在項(xiàng)目配置文件中添加參數(shù):
'VAR_FILTERS'=>'strip_tags'
則會(huì)對(duì)全局的get和post變量進(jìn)行過(guò)濾,其他類型的系統(tǒng)變量需要自行過(guò)濾。

第二:在寫(xiě)入數(shù)據(jù)庫(kù)之前進(jìn)行變量過(guò)濾
如果你的變量數(shù)據(jù)是要寫(xiě)入到數(shù)據(jù)庫(kù)的話,可以在數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)之前調(diào)用filter方法對(duì)數(shù)據(jù)進(jìn)行安全過(guò)濾,例如:
$this->data($data)->filter('strip_tags')->add();
在執(zhí)行add方法之前,會(huì)對(duì)$data數(shù)據(jù)進(jìn)行strip_tags過(guò)濾處理。但是,這種方式下面,filter方法不支持多個(gè)過(guò)濾方法。

總結(jié)

使用ThinkPHP,我們可以輕松地對(duì)系統(tǒng)變量的獲取和過(guò)濾,你的開(kāi)發(fā)功力明顯提升了不少。加油,后面還會(huì)講解如何使用路由。
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲福利一区二区三区 | 91精品久久久久久久99蜜桃 | 99导航| 成人福利午夜 | 91看片免费在线观看 | 精品国产高清一区二区三区 | 麻豆一区| 九九热视频在线 | 国产一区二区三区久久久 | 99re6热只有精品免费观看 | www.av在| 做a视频在线观看 | 高清av网站 | 免费国产一区 | 午夜精品久久久久久久久久蜜桃 | 国产精品久久久久久久久久三级 | 亚洲免费综合 | 欧美 日韩 国产 在线 | 亚洲精品一二三 | 日韩裸女 | 国产精品久久久久久久免费软件 | 国产一二区 | 精产国产伦理一二三区 | 在线国产一区二区 | 尤物yw | 伦一理一级一a一片 | 正在播放国产一区二区 | 91高清免费看 | 国产精品久久一区 | 成人欧美一区二区三区视频网页 | 亚洲精品视频免费观看 | 亚洲色图15p | 成人高清av | 四虎黄色影院 | 一区二区三区国产片 | 99精品视频免费在线观看 | 国产一区二区视频在线 | 国产精品久久久久久久免费软件 | 99精品免费| 麻豆av一区二区三区 | 国产成人精品一区二区 |