《PHP实战:thinkphp3.x中变量的获取和过滤方法详解》要点:
本文介绍了PHP实战:thinkphp3.x中变量的获取和过滤方法详解,希望对您有用。如果有疑问,可以联系我们。
相关主题:thinkphp教程
本文实例讲述了thinkphp3.x中变量的获取和过滤办法.分享给大家供大家参考,具体如下:PHP学习
这里我们来学习如安在ThinkPHP中使用变量和对变量进行过滤.PHP学习
在Web开发过程中,我们经常需要获取系统变量或者用户提交的数据,这些变量数据错综复杂,而且一不小心就容易引起平安隐患,但是如果利用好ThinkPHP提供的变量获取功能,就可以轻松的获取和驾驭变量了.PHP学习
一、获取变量PHP学习
1.首先,我们来谈下如何获取变量.PHP学习
第一种方式:传统获取方式,你仍然可以在开发过程中使用传统方式获取各种系统变量,例如:PHP学习
$id = $_GET['id'];//获取get变量 $name = $_POST['name'];//获取post变量 $value = $_SESSION['var'];//获取session变量 $name = $_COOKIE['name'];//获取cookie变量 $file = $_SERVER['PHP_SELF'];//获取server变量
不建议直接使用传统方式获取,因为没有统一的平安处理机制,后期如果调整的话,改起来会比较麻烦.PHP学习
第二种方式:使用Action类提供的动态办法PHP学习
系统的Action类提供了对系统变量的增强获取办法,包括对GET、POST、PUT、REQUEST、SESSION、COOKIE、SERVER和GLOBALS参数,除了获取变量值外,还提供变量过滤和默认值支持,用法很简单,只需要在Action中调用下面办法: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变量
调用格式为:PHP学习
$this->办法名("变量名",["过滤办法"],["默认值"])PHP学习
支持的办法名:PHP学习
_get 获取GET参数
_post 获取POST参数
_param 自动判断哀求类型获取GET、POST或者PUT参数
_request 获取REQUEST参数
_put 获取PUT参数
_session 获取$_SESSION参数
_cookie 获取$_COOKIE参数
_server 获取$_SERVER参数
_globals 获取$GLOBALS参数PHP学习
变量名:(必须)是要获取的系统变量的名称PHP学习
过滤方法:(可选)可以用任何的内置函数或者自定义函数名,如果没有指定的话,采用默认的htmlspecialchars函数进行平安过滤(由DEFAULT_FILTER 参数配置),参数就是前面方法名获取到的值,PHP学习
也就是说如果调用:PHP学习
$this->_get("name");
最终调用的结果就是 htmlspecialchars($_GET["name"]),如果要改变过滤办法,可以使用:PHP学习
$this->_get("name","strip_tags");
默认值:(可选)是要获取的参数变量不存在的情况下设置的默认值,例如:PHP学习
$this->_get("id","strip_tags",0);
如果$_GET["id"] 不存在的话,会返回0.PHP学习
如果没有设置任何默认值的话,系统默认返回NULL.PHP学习
其他办法的用法类似.PHP学习
看起来好像差别不大,但是有一个明显的优势,就是如果我需要增加或者改变对这些变量做统一的过滤,一般不需要修改变量获取的代码,只是在项目配置文件中增加一个配置参数即可,例如:PHP学习
'DEFAULT_FILTER'=>'strip_tags'
对所有的采用动态方式获取的变量使用strip_tags办法进行统一过滤,也可以支持多个过滤办法,例如:PHP学习
'DEFAULT_FILTER'=>'strip_tags,htmlspecialchars'
表示先进行strip_tags过滤,然后再进行htmlspecialchars过滤.PHP学习
如果你在获取某个变量的时候 需要自定义过滤办法,则可以改成:PHP学习
$name = $this->_post('content','trim,strip_tags'); // 获取post变量并过滤
如果你在项目配置中设置了统一的变量过滤办法,但是希望对某些变量不进行过滤,则可以用:PHP学习
$name = $this->_post('id','',0);
如果你的参数可能会来自于多个提交方式,那么可以使用_param办法来更方便的获取,例如:PHP学习
$this->_param('id');
当前为get方式提交的时候,就等效于PHP学习
$this->_get('id');
当前为post方式提交的时候,就等效于PHP学习
$this->_post('id');
如果为put方式提交的话,就等效于PHP学习
$this->_put('id');
其优点自然很明显,同一个办法可以接受不同提交类型的变量,不用手动做太多的判断再来获取不同的参数了.PHP学习
二、获取URL参数PHP学习
在某些情况下面,我们还有一种获取URL参数的特殊需求,一般来说,获取URL参数是采用get变量的方式就够用了,但是对于我们定制过的URL,或者采用了路由的情况下面,URL的参数可能会没有规律,这个时候,我们可以采用另外一种方式来获取.PHP学习
例如,当前的URL地址是:PHP学习
http://localhost/index.php/news/hello_world/thinkphpPHP学习
我们要获取其中的参数,可以用:PHP学习
$this->_param(0); // 获取news $this->_param(1); // 获取hello_world $this->_param(2); // 获取thinkphp
不过_param(数字) 方式的变量获取,仅对PATHINFO模式URL地址有效PHP学习
三、变量过滤PHP学习
前面我们已经了解了如何使用Action类提供的办法来进行变量获取和过滤了,但是在没有调用这些动态办法的前提下,我们怎么来进行数据过滤呢?PHP学习
ThinkPHP还提供了两种方式来进行数据过滤操作:PHP学习
第一:配置全局的变量过滤PHP学习
这种情况是针对一些会在多使用的情况,可以通过配置全局过滤 简化操作,例如在项目配置文件中添加参数:PHP学习
'VAR_FILTERS'=>'strip_tags'
则会对全局的get和post变量进行过滤,其他类型的系统变量需要自行过滤.PHP学习
第二:在写入数据库之前进行变量过滤PHP学习
如果你的变量数据是要写入到数据库的话,可以在数据写入数据库之前调用filter方法对数据进行平安过滤,例如:PHP学习
$this->data($data)->filter('strip_tags')->add();
在执行add办法之前,会对$data数据进行strip_tags过滤处理.但是,这种方式下面,filter办法不支持多个过滤办法.PHP学习
四、总结PHP学习
使用ThinkPHP,我们可以轻松地对系统变量的获取和过滤,你的开发功力明显提升了不少.加油,后面还会讲解如何使用路由.PHP学习
PS:这里推荐几款本站的格式化美化工具,相信大家在以后的开发中能够用得上: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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《ThinkPHP常用办法总结》、《PHP中cookie用法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》.PHP学习
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所赞助.PHP学习
转载请注明本页网址:
http://www.vephp.com/jiaocheng/6576.html