茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    thinkphp3.x中變量的獲取和過濾方法詳解
    來源:易賢網(wǎng) 閱讀:1046 次 日期:2016-08-20 13:28:07
    溫馨提示:易賢網(wǎng)小編為您整理了“thinkphp3.x中變量的獲取和過濾方法詳解”,方便廣大網(wǎng)友查閱!

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

    這里我們來學(xué)習(xí)如何在ThinkPHP中使用變量和對變量進(jìn)行過濾。

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

    一、獲取變量

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

    第一種方式:傳統(tǒng)獲取方式,你仍然可以在開發(fā)過程中使用傳統(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)闆]有統(tǒng)一的安全處理機(jī)制,后期如果調(diào)整的話,改起來會比較麻煩。

    第二種方式:使用Action類提供的動態(tài)方法

    系統(tǒng)的Action類提供了對系統(tǒng)變量的增強(qiáng)獲取方法,包括對GET、POST、PUT、REQUEST、SESSION、COOKIE、SERVER和GLOBALS參數(shù),除了獲取變量值外,還提供變量過濾和默認(rè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->方法名("變量名",["過濾方法"],["默認(rèn)值"])

    支持的方法名:

    _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ù)

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

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

    也就是說如果調(diào)用:

    $this->_get("name");

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

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

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

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

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

    如果沒有設(shè)置任何默認(rèn)值的話,系統(tǒng)默認(rèn)返回NULL。

    其他方法的用法類似。

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

    'DEFAULT_FILTER'=>'strip_tags'

    對所有的采用動態(tài)方式獲取的變量使用strip_tags方法進(jìn)行統(tǒng)一過濾,也可以支持多個(gè)過濾方法,例如:

    'DEFAULT_FILTER'=>'strip_tags,htmlspecialchars'

    表示先進(jìn)行strip_tags過濾,然后再進(jìn)行htmlspecialchars過濾。

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

    $name = $this->_post('content','trim,strip_tags');

    // 獲取post變量并過濾

    如果你在項(xiàng)目配置中設(shè)置了統(tǒng)一的變量過濾方法,但是希望對某些變量不進(jìn)行過濾,則可以用:

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

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

    $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è)方法可以接受不同提交類型的變量,不用手動做太多的判斷再來獲取不同的參數(shù)了。

    二、獲取URL參數(shù)

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

    例如,當(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

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

    三、變量過濾

    前面我們已經(jīng)了解了如何使用Action類提供的方法來進(jìn)行變量獲取和過濾了,但是在沒有調(diào)用這些動態(tài)方法的前提下,我們怎么來進(jìn)行數(shù)據(jù)過濾呢?

    ThinkPHP還提供了兩種方式來進(jìn)行數(shù)據(jù)過濾操作:

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

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

    'VAR_FILTERS'=>'strip_tags'

    則會對全局的get和post變量進(jìn)行過濾,其他類型的系統(tǒng)變量需要自行過濾。

    第二:在寫入數(shù)據(jù)庫之前進(jìn)行變量過濾

    如果你的變量數(shù)據(jù)是要寫入到數(shù)據(jù)庫的話,可以在數(shù)據(jù)寫入數(shù)據(jù)庫之前調(diào)用filter方法對數(shù)據(jù)進(jìn)行安全過濾,例如:

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

    在執(zhí)行add方法之前,會對$data數(shù)據(jù)進(jìn)行strip_tags過濾處理。但是,這種方式下面,filter方法不支持多個(gè)過濾方法。

    四、總結(jié)

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

    希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:thinkphp3.x中變量的獲取和過濾方法詳解
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)