《PHP實戰(zhàn):thinkphp3.x中變量的獲取和過濾方法詳解》要點:
本文介紹了PHP實戰(zhàn):thinkphp3.x中變量的獲取和過濾方法詳解,希望對您有用。如果有疑問,可以聯(lián)系我們。
相關主題:thinkphp教程
本文實例講述了thinkphp3.x中變量的獲取和過濾辦法.分享給大家供大家參考,具體如下:PHP學習
這里我們來學習如安在ThinkPHP中使用變量和對變量進行過濾.PHP學習
在Web開發(fā)過程中,我們經(jīng)常需要獲取系統(tǒng)變量或者用戶提交的數(shù)據(jù),這些變量數(shù)據(jù)錯綜復雜,而且一不小心就容易引起平安隱患,但是如果利用好ThinkPHP提供的變量獲取功能,就可以輕松的獲取和駕馭變量了.PHP學習
一、獲取變量PHP學習
1.首先,我們來談下如何獲取變量.PHP學習
第一種方式:傳統(tǒng)獲取方式,你仍然可以在開發(fā)過程中使用傳統(tǒng)方式獲取各種系統(tǒng)變量,例如:PHP學習
$id = $_GET['id'];//獲取get變量 $name = $_POST['name'];//獲取post變量 $value = $_SESSION['var'];//獲取session變量 $name = $_COOKIE['name'];//獲取cookie變量 $file = $_SERVER['PHP_SELF'];//獲取server變量
不建議直接使用傳統(tǒng)方式獲取,因為沒有統(tǒng)一的平安處理機制,后期如果調(diào)整的話,改起來會比較麻煩.PHP學習
第二種方式:使用Action類提供的動態(tài)辦法PHP學習
系統(tǒng)的Action類提供了對系統(tǒng)變量的增強獲取辦法,包括對GET、POST、PUT、REQUEST、SESSION、COOKIE、SERVER和GLOBALS參數(shù),除了獲取變量值外,還提供變量過濾和默認值支持,用法很簡單,只需要在Action中調(diào)用下面辦法:PHP學習
$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)用格式為:PHP學習
$this->辦法名("變量名",["過濾辦法"],["默認值"])PHP學習
支持的辦法名:PHP學習
_get 獲取GET參數(shù)
_post 獲取POST參數(shù)
_param 自動判斷哀求類型獲取GET、POST或者PUT參數(shù)
_request 獲取REQUEST參數(shù)
_put 獲取PUT參數(shù)
_session 獲取$_SESSION參數(shù)
_cookie 獲取$_COOKIE參數(shù)
_server 獲取$_SERVER參數(shù)
_globals 獲取$GLOBALS參數(shù)PHP學習
變量名:(必須)是要獲取的系統(tǒng)變量的名稱PHP學習
過濾方法:(可選)可以用任何的內(nèi)置函數(shù)或者自定義函數(shù)名,如果沒有指定的話,采用默認的htmlspecialchars函數(shù)進行平安過濾(由DEFAULT_FILTER 參數(shù)配置),參數(shù)就是前面方法名獲取到的值,PHP學習
也就是說如果調(diào)用:PHP學習
$this->_get("name");
最終調(diào)用的結果就是 htmlspecialchars($_GET["name"]),如果要改變過濾辦法,可以使用:PHP學習
$this->_get("name","strip_tags");
默認值:(可選)是要獲取的參數(shù)變量不存在的情況下設置的默認值,例如:PHP學習
$this->_get("id","strip_tags",0);
如果$_GET["id"] 不存在的話,會返回0.PHP學習
如果沒有設置任何默認值的話,系統(tǒng)默認返回NULL.PHP學習
其他辦法的用法類似.PHP學習
看起來好像差別不大,但是有一個明顯的優(yōu)勢,就是如果我需要增加或者改變對這些變量做統(tǒng)一的過濾,一般不需要修改變量獲取的代碼,只是在項目配置文件中增加一個配置參數(shù)即可,例如:PHP學習
'DEFAULT_FILTER'=>'strip_tags'
對所有的采用動態(tài)方式獲取的變量使用strip_tags辦法進行統(tǒng)一過濾,也可以支持多個過濾辦法,例如:PHP學習
'DEFAULT_FILTER'=>'strip_tags,htmlspecialchars'
表示先進行strip_tags過濾,然后再進行htmlspecialchars過濾.PHP學習
如果你在獲取某個變量的時候 需要自定義過濾辦法,則可以改成:PHP學習
$name = $this->_post('content','trim,strip_tags'); // 獲取post變量并過濾
如果你在項目配置中設置了統(tǒng)一的變量過濾辦法,但是希望對某些變量不進行過濾,則可以用:PHP學習
$name = $this->_post('id','',0);
如果你的參數(shù)可能會來自于多個提交方式,那么可以使用_param辦法來更方便的獲取,例如:PHP學習
$this->_param('id');
當前為get方式提交的時候,就等效于PHP學習
$this->_get('id');
當前為post方式提交的時候,就等效于PHP學習
$this->_post('id');
如果為put方式提交的話,就等效于PHP學習
$this->_put('id');
其優(yōu)點自然很明顯,同一個辦法可以接受不同提交類型的變量,不用手動做太多的判斷再來獲取不同的參數(shù)了.PHP學習
二、獲取URL參數(shù)PHP學習
在某些情況下面,我們還有一種獲取URL參數(shù)的特殊需求,一般來說,獲取URL參數(shù)是采用get變量的方式就夠用了,但是對于我們定制過的URL,或者采用了路由的情況下面,URL的參數(shù)可能會沒有規(guī)律,這個時候,我們可以采用另外一種方式來獲取.PHP學習
例如,當前的URL地址是:PHP學習
http://localhost/index.php/news/hello_world/thinkphpPHP學習
我們要獲取其中的參數(shù),可以用:PHP學習
$this->_param(0); // 獲取news $this->_param(1); // 獲取hello_world $this->_param(2); // 獲取thinkphp
不過_param(數(shù)字) 方式的變量獲取,僅對PATHINFO模式URL地址有效PHP學習
三、變量過濾PHP學習
前面我們已經(jīng)了解了如何使用Action類提供的辦法來進行變量獲取和過濾了,但是在沒有調(diào)用這些動態(tài)辦法的前提下,我們怎么來進行數(shù)據(jù)過濾呢?PHP學習
ThinkPHP還提供了兩種方式來進行數(shù)據(jù)過濾操作:PHP學習
第一:配置全局的變量過濾PHP學習
這種情況是針對一些會在多使用的情況,可以通過配置全局過濾 簡化操作,例如在項目配置文件中添加參數(shù):PHP學習
'VAR_FILTERS'=>'strip_tags'
則會對全局的get和post變量進行過濾,其他類型的系統(tǒng)變量需要自行過濾.PHP學習
第二:在寫入數(shù)據(jù)庫之前進行變量過濾PHP學習
如果你的變量數(shù)據(jù)是要寫入到數(shù)據(jù)庫的話,可以在數(shù)據(jù)寫入數(shù)據(jù)庫之前調(diào)用filter方法對數(shù)據(jù)進行平安過濾,例如:PHP學習
$this->data($data)->filter('strip_tags')->add();
在執(zhí)行add辦法之前,會對$data數(shù)據(jù)進行strip_tags過濾處理.但是,這種方式下面,filter辦法不支持多個過濾辦法.PHP學習
四、總結PHP學習
使用ThinkPHP,我們可以輕松地對系統(tǒng)變量的獲取和過濾,你的開發(fā)功力明顯提升了不少.加油,后面還會講解如何使用路由.PHP學習
PS:這里推薦幾款本站的格式化美化工具,相信大家在以后的開發(fā)中能夠用得上:PHP學習
php代碼在線格式化美化工具:
ode/phpformatPHP學習
JavaScript代碼美化/壓縮/格式化/加密工具:
ode/jscompressPHP學習
在線XML格式化/壓縮工具:
ode/xmlformatPHP學習
JSON代碼格式化美化工具:
ode/jsonPHP學習
在線XML/JSON互相轉換工具:
ode/xmljsonPHP學習
json代碼在線格式化/美化/壓縮/編輯/轉換工具:
ode/jsoncodeformat
PHP學習
sql代碼在線格式化美化工具:
ode/sqlcodeformatPHP學習
更多關于thinkPHP相關內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《ThinkPHP常用辦法總結》、《PHP中cookie用法總結》、《smarty模板入門基礎教程》及《PHP模板技術總結》.PHP學習
希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所贊助.PHP學習
轉載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/6576.html