首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >控制器操作【2】

控制器操作【2】

作者头像
PM吃瓜
发布2019-08-13 10:42:27
5320
发布2019-08-13 10:42:27
举报
文章被收录于专栏:PM吃瓜(公众号)PM吃瓜(公众号)

三.跳转和重定向 ThinkPHP 在操作数据库时,需要跳转和重定向页面。ThinkPHP 提供了一组方法来解决了这个问题。 //成功和失败的跳转 class UserController extends Controller { public function index() { $flag = true; if ($flag) { //会跳转到:http://localhost/demo39/User/all $this->success('新增成功!', '../User/all'); } else { //会跳转到本页的上一页 $this->error('新增失败!'); } } } PS:success()方法和 error()方法,第一个参数是提示信息、第二个跳转的地址、第三个跳转时间。默认情况下 success()方法是 1 秒,error()方法是 3 秒。

//设置5秒 $this->success('新增成功!', 'list', 5); success()方法和 error()方法,跳转的时候就对应了相应的模版,默认如下: //默认错误跳转对应的模板文件 'TMPL_ACTION_ERROR' =>THINK_PATH .'Tpl/dispatch_jump.tpl', //默认成功跳转对应的模板文件 'TMPL_ACTION_SUCCESS'=>THINK_PATH.'Tpl/dispatch_jump.tpl', //自定义成功和错误提示模版页面 'TMPL_ACTION_SUCCESS'=>'Public/success', 'TMPL_ACTION_ERROR'=>'Public/error', 对于自定义的提示模版,ThinkPHP 提供了一组变量可供使用。

//模版中使用提示变量 操作标题:{$msgTitle}<br /> 页面提示信息:{$message}<br /> 操作状态:{$status}<br /> 跳转等待时间:{$waitSecond}<br /> 页面跳转地址:{$jumpUrl} PS:如果对于数据库操作,采用了 Ajax 方式,那么 success()和 error()会自动 ajaxReturn()方法返回数据提供调用。 ThinkPHP 还单独提供了重定向方法 redirect(),参数和 U()方法一样。这个方法使用的是 URL 规则。 $this->redirect('User/test', array('id'=>5), 5, '页面跳转中...'); 如果只是想纯粹的 URL 跳转,不去使用 URL 规则,那么直接使用 redirect()函数。redirect('http://www.baidu.com', 5, '页面跳转中...');

四.输入变量 我们在获取系统变量或者用户提交的数据时,这些变量数据错综复杂,一不小心就容易 引擎安全隐患,所以,ThinkPHP 提供了轻松和安全获取变量的解决方案。 //常规获取变量方式 $id = $_GET['id']; //获取get变量 $name = $_POST['name']; //获取post变量 $value = $_SESSION['var']; //获取session变量 $name = $_COOKIE['name']; //获取cookie变量 $file = $_SERVER['PHP_SELF']; //获取 server 变量 PS:在 ThinkPHP 中,我们不再建议直接使用传统方式获取,因为没有统一的安全处理 机制,后期调整也会比较麻烦。所以,ThinkPHP 提供 I()方法进行变量的获取和过滤。 I()方法的格式:I('变量类型.变量名',['默认值'],['过滤方法'])

//获取$_GET['id']; echo I('get.id'); //$_GET['id']没有值,则默认1 echo I('get.id', 1); //过滤$_GET['id'] echo I('get.id', '', 'md5'); //获取$_GET; print_r(I('get.')); PS:其他几个系统变量均采用以上方式,这里不在赘述。 ThinkPHP 还提供了一个自动识别各种系统变量类型的接受方法:param。 //param变量自动判断变量类型 echo I('param.id'); //param可以省略 echo I('id'); 如果是 PATHINFO 模式的 URL,param 也可以接收。 //param获取URL所有参数 print_r(I('param.0')); PS:取消和开启 URL 的'URL_PARAMS_BIND_TYPE'=>1 配置定义,在访问这个 URL 的 时候结果有所不同:http://localhost/demo39/User/index/id/5/type/a 关闭 URL 传参顺序:Array ( [id] => 5 [type] => a ) 开启 URL 传参顺序:Array ( [0] => id [1] => 5 [2] => type [3] => a )

//param获取指定参数值 echo I('param.id'); echo I('param.type'); 默认情况下,I()的默认过滤是:htmlspecialchars,过滤掉 HTML。 //过滤HTML,如果去掉了,则传递包含HTML的字符串,将不过滤 'DEFAULT_FILTER'=>'htmlspecialchars',

当然,如果不过滤,也可以在程序中过滤。 //设置过滤函数,会忽略配置文件里的设置 echo I('get.id', '', 'htmlspecialchars'); 如果系统设置了默认的过滤,本身某个函数又不想过滤,那么可以这么处理: //设置屏蔽系统默认过滤 echo I('get.id','', false); //第三参数为空字符串均可

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tech爬虫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档