亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

thinkphp3.x中變量的獲取和過濾方法詳解

2024-05-04 23:46:30
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了thinkphp3.x中變量的獲取和過濾方法,結合實例分析了thinkPHP針對各種常見變量如get、post、cookie、session、URL等的獲取及過濾等技巧,需要的朋友可以參考下
 

本文實例講述了thinkphp3.x中變量的獲取和過濾方法。分享給大家供大家參考,具體如下:

這里我們來學習如何在ThinkPHP中使用變量和對變量進行過濾。

在Web開發過程中,我們經常需要獲取系統變量或者用戶提交的數據,這些變量數據錯綜復雜,而且一不小心就容易引起安全隱患,但是如果利用好ThinkPHP提供的變量獲取功能,就可以輕松的獲取和駕馭變量了。

一、獲取變量

1.首先,我們來談下如何獲取變量。

第一種方式:傳統獲取方式,你仍然可以在開發過程中使用傳統方式獲取各種系統變量,例如:

$id = $_GET['id'];//獲取get變量$name = $_POST['name'];//獲取post變量$value = $_SESSION['var'];//獲取session變量$name = $_COOKIE['name'];//獲取cookie變量$file = $_SERVER['PHP_SELF'];//獲取server變量

不建議直接使用傳統方式獲取,因為沒有統一的安全處理機制,后期如果調整的話,改起來會比較麻煩。

第二種方式:使用Action類提供的動態方法

系統的Action類提供了對系統變量的增強獲取方法,包括對GET、POST、PUT、REQUEST、SESSION、COOKIE、SERVER和GLOBALS參數,除了獲取變量值外,還提供變量過濾和默認值支持,用法很簡單,只需要在Action中調用下面方法:

$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變量

調用格式為:

$this->方法名("變量名",["過濾方法"],["默認值"])

支持的方法名:

_get 獲取GET參數
_post 獲取POST參數
_param 自動判斷請求類型獲取GET、POST或者PUT參數
_request 獲取REQUEST參數
_put 獲取PUT參數
_session 獲取$_SESSION參數
_cookie 獲取$_COOKIE參數
_server 獲取$_SERVER參數
_globals 獲取$GLOBALS參數

變量名:(必須)是要獲取的系統變量的名稱

過濾方法:(可選)可以用任何的內置函數或者自定義函數名,如果沒有指定的話,采用默認的htmlspecialchars函數進行安全過濾(由DEFAULT_FILTER 參數配置),參數就是前面方法名獲取到的值,

也就是說如果調用:

$this->_get("name");

最終調用的結果就是 htmlspecialchars($_GET["name"]),如果要改變過濾方法,可以使用:

$this->_get("name","strip_tags");

默認值:(可選)是要獲取的參數變量不存在的情況下設置的默認值,例如:

$this->_get("id","strip_tags",0);

如果$_GET["id"] 不存在的話,會返回0。

如果沒有設置任何默認值的話,系統默認返回NULL。

其他方法的用法類似。

看起來好像差別不大,但是有一個明顯的優勢,就是如果我需要增加或者改變對這些變量做統一的過濾,一般不需要修改變量獲取的代碼,只是在項目配置文件中增加一個配置參數即可,例如:

'DEFAULT_FILTER'=>'strip_tags'

對所有的采用動態方式獲取的變量使用strip_tags方法進行統一過濾,也可以支持多個過濾方法,例如:

'DEFAULT_FILTER'=>'strip_tags,htmlspecialchars'

表示先進行strip_tags過濾,然后再進行htmlspecialchars過濾。

如果你在獲取某個變量的時候 需要自定義過濾方法,則可以改成:

$name = $this->_post('content','trim,strip_tags');// 獲取post變量并過濾

如果你在項目配置中設置了統一的變量過濾方法,但是希望對某些變量不進行過濾,則可以用:

$name = $this->_post('id','',0);

如果你的參數可能會來自于多個提交方式,那么可以使用_param方法來更方便的獲取,例如:

$this->_param('id');

當前為get方式提交的時候,就等效于

$this->_get('id');

當前為post方式提交的時候,就等效于

$this->_post('id');

如果為put方式提交的話,就等效于

$this->_put('id');

其優點自然很明顯,同一個方法可以接受不同提交類型的變量,不用手動做太多的判斷再來獲取不同的參數了。

二、獲取URL參數

在某些情況下面,我們還有一種獲取URL參數的特殊需求,一般來說,獲取URL參數是采用get變量的方式就夠用了,但是對于我們定制過的URL,或者采用了路由的情況下面,URL的參數可能會沒有規律,這個時候,我們可以采用另外一種方式來獲取。

例如,當前的URL地址是:

http://localhost/index.php/news/hello_world/thinkphp

我們要獲取其中的參數,可以用:

$this->_param(0); // 獲取news$this->_param(1); // 獲取hello_world$this->_param(2); // 獲取thinkphp

不過_param(數字) 方式的變量獲取,僅對PATHINFO模式URL地址有效

三、變量過濾

前面我們已經了解了如何使用Action類提供的方法來進行變量獲取和過濾了,但是在沒有調用這些動態方法的前提下,我們怎么來進行數據過濾呢?

ThinkPHP還提供了兩種方式來進行數據過濾操作:

第一:配置全局的變量過濾

這種情況是針對一些會在多使用的情況,可以通過配置全局過濾 簡化操作,例如在項目配置文件中添加參數:

'VAR_FILTERS'=>'strip_tags'

則會對全局的get和post變量進行過濾,其他類型的系統變量需要自行過濾。

第二:在寫入數據庫之前進行變量過濾

如果你的變量數據是要寫入到數據庫的話,可以在數據寫入數據庫之前調用filter方法對數據進行安全過濾,例如:

$this->data($data)->filter('strip_tags')->add();

在執行add方法之前,會對$data數據進行strip_tags過濾處理。但是,這種方式下面,filter方法不支持多個過濾方法。

四、總結

使用ThinkPHP,我們可以輕松地對系統變量的獲取和過濾,你的開發功力明顯提升了不少。加油,后面還會講解如何使用路由。



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩二区三区在线| 国产成人福利夜色影视| 中文字幕亚洲综合久久筱田步美| 777午夜精品福利在线观看| 成人免费黄色网| 激情av一区二区| 亚洲人成五月天| 一区二区三区精品99久久| 在线亚洲男人天堂| 91精品久久久久久久| 一区二区三区回区在观看免费视频| 在线视频一区二区| 一区二区三区黄色| 亚洲毛片在线免费观看| 欧美成人午夜免费视在线看片| 精品人伦一区二区三区蜜桃网站| 亚洲国产一区自拍| 久久久久国产精品www| 一本色道久久综合亚洲精品小说| 91精品美女在线| 日韩精品视频中文在线观看| 国产精品日韩在线| 欧美xxxx14xxxxx性爽| www.xxxx欧美| 国产精品国产自产拍高清av水多| 国产精品久久久久久久一区探花| 亚洲直播在线一区| 97婷婷大伊香蕉精品视频| 久久久久久一区二区三区| 色一情一乱一区二区| 欧美激情三级免费| 欧美日韩在线影院| 成人亲热视频网站| 奇米一区二区三区四区久久| 欧美性猛交xxxx乱大交| 欧美中文字幕在线观看| 日韩精品免费在线| 超在线视频97| 欧美最顶级的aⅴ艳星| 91九色单男在线观看| 色婷婷综合成人av| 69久久夜色精品国产7777| 97视频在线观看免费高清完整版在线观看| 亚洲欧美色婷婷| 国产成人精品一区二区三区| 欧美精品一区在线播放| 亚洲中国色老太| 精品国产福利在线| 5566日本婷婷色中文字幕97| 97精品伊人久久久大香线蕉| 欧美性受xxxx黑人猛交| 亚洲激情 国产| 亚洲精品美女在线观看| 欧美在线亚洲在线| 日韩久久午夜影院| 国产亚洲成av人片在线观看桃| 欧美丝袜美女中出在线| 亚洲剧情一区二区| 日韩成人在线免费观看| 亚洲美女在线视频| 伊人激情综合网| 亚洲激情久久久| 久久亚洲一区二区三区四区五区高| 欧美理论电影在线播放| 色综合久久88色综合天天看泰| 欧美日韩亚洲视频一区| 亚洲人成啪啪网站| 亚洲国产精品推荐| 亚洲自拍偷拍色图| 91美女福利视频高清| 欧美疯狂性受xxxxx另类| 日本精品视频在线播放| 日韩av免费一区| 精品国模在线视频| 日本一区二区三区四区视频| 69视频在线免费观看| 中文字幕久热精品视频在线| 亚洲国产精品99久久| 久久国产精品久久久| 国产亚洲xxx| 欧美日韩一区二区免费在线观看| 欧美老女人性生活| 欧美激情视频在线免费观看 欧美视频免费一| 中文字幕在线日韩| 91精品国产自产91精品| 日韩视频免费大全中文字幕| 国产精品久久久久久久久久ktv| 久久久综合免费视频| 91精品视频网站| 日本欧美一级片| 国产精品视频久久久| 亚洲视频axxx| 欧美第一黄色网| 国产精品嫩草影院久久久| 亚洲精品一区久久久久久| 亚洲成色777777女色窝| 5566日本婷婷色中文字幕97| 97久久久久久| 国产成人亚洲综合91| 日韩国产高清视频在线| 亚洲精品videossex少妇| 777午夜精品福利在线观看| 日韩欧美在线观看视频| 亚洲影视九九影院在线观看| 欧美黑人性视频| 青青草一区二区| 久久成人这里只有精品| 日韩**中文字幕毛片| 亚洲а∨天堂久久精品9966| 欧美日韩免费观看中文| 精品美女久久久久久免费| 欧美国产日产韩国视频| 精品伊人久久97| 国产精品综合久久久| 国产精品高潮呻吟久久av无限| 久久这里有精品视频| 亚洲欧美一区二区精品久久久| 亚洲影院在线看| 欧美一区二区三区精品电影| 日韩性xxxx爱| 日本在线观看天堂男亚洲| 国产成人在线视频| 久久影院中文字幕| 中文字幕精品一区久久久久| 97在线精品国自产拍中文| 欧美大片在线影院| 日韩美女在线看| 色噜噜亚洲精品中文字幕| 国产精品视频一区二区高潮| 欧美日韩电影在线观看| 国内偷自视频区视频综合| 欧美视频裸体精品| 欧美视频在线观看免费| 精品视频在线播放| 日韩欧美中文字幕在线播放| 色午夜这里只有精品| 欧美成人黄色小视频| 69av在线视频| 日本免费久久高清视频| 不卡av电影院| 亚洲性av在线| 九九热精品在线| 欧美日韩色婷婷| 国产丝袜一区二区三区| 91九色蝌蚪国产| 欧美极品在线视频| 日韩a**站在线观看| 亚洲午夜久久久久久久| 国产精品91视频| 日本精品视频在线| 欧美激情精品久久久久久蜜臀| 亚洲最大福利视频网站| 成人97在线观看视频| 51久久精品夜色国产麻豆| 国产精品日韩一区| 国产精品扒开腿做爽爽爽的视频| 日韩美女视频在线观看| 98精品在线视频| 亚洲国产精品久久| 亚洲国产精品va在线看黑人| 国产精品直播网红| 欧美一区二区色| 国产精品久久久久久久av大片| 青青久久av北条麻妃海外网|