PHP----重定向和页面跳转


重定向页面跳转都是基于用户请求的一种URL维护手段。

重定向

在访问受保护的地址时(某些情况下很恶心人),需要检查登录,如果用户未登录则跳转到登录页面,此时需要使用重定向。ThinkPHP重定向的方法名为redirect,该方法为Controller的成员方法,需要在控制器中才能调用。
www.test.com/example(模块名)/Application/Home/Controller/IndexController.class.php

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller
{
    public function index()
    {
        $this->redirect('login');  //重定向到login
    }

    public function bind($id = 1)
    {
        echo U('Blog/view',array('id' => 1), 'shtml');
    }

    public function login()
    {
        echo 'This is login page!!!';
    }

    public function buy()
    {
        $this->success('购买成功,3秒后跳转首页',U('index'),3);
    }
}

这时,使用浏览器访问http://www.test.com/example/home/index/index
会发现浏览器自动跳转到http://www.test.com/example/home/index了

在这里插入图片描述

控制器redirect

redirect的第一个参数为URL地址表达式,第二个参数为URL变量,第三个参数为延迟时间,第四个参数为提示消息

内置redirect

值得注意的是,ThinkPHP还内置了一个redirect函数,该函数接受三个参数,第一个参数为URL地址,第二个参数为延迟时间,第三个参数为消息提示。与控制器redirect方法的区别是,redirect函数的第一个参数是一个独立的URL地址,系统不会对其做任何的处理,而控制器的redirect方法第一个参数是URL地址表达式,ThinkPHP会根据URL_MODEL生成相应的URL。

页面跳转

在开发当中,经常遇到一些带有信息提示的跳转页面,例如“充值成功,3秒后返回订单页”这种需求。ThinkPHP内置success和error方法来实现页面跳转。

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller
{
    public function index()
    {
        $this->redirect('login');
    }

    public function bind($id = 1)
    {
        echo U('Blog/view',array('id' => 1), 'shtml');
    }

    public function login()
    {
        echo 'This is login page!!!';
    }

    public function buy()
    {
        $this->success('购买成功,3秒后跳转首页',U('index'),3);
    }
}

浏览器访问http://www.test.com/chapter-4/home/index/buy

在这里插入图片描述

参数

success和error方法的第一个参数表示提示信息,第二个参数表示跳转地址(建议用U方法生成),第三个参数是跳转时间(单位为秒),例如:

$this->success(‘操作成功,3秒后返回首页’,U('index‘)3);
$this->error(‘您尚未登录,1秒后返回登录页’,U(’User/login‘)1);

如果跳转地址为空,success默认跳转$_SERVER["HTTP_REFERER"], error默认跳转javascript:history.back(-1);
success的默认跳转延迟时间为1秒,error方法为3秒。

与redirect的区别

和redirect方法不同的是,success和error方法都可以使用模板,而redirect方法只能输出字符串,success和error默认的模板文件地址为
THINK_PATH , ‘Tpl/dispatch_jump.tql’ , success方法可以配置“TMPL_ACTION_SUCCESS”改变模板地址,error方法可以配置“TMPL_ACTION_ERROR"改变模板地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值