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

文章目录

  • 重定向
    • 控制器redirect
    • 内置redirect
  • 页面跳转
    • 参数
    • 与redirect的区别

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

重定向

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

PHP----重定向和页面跳转_第1张图片

控制器redirect

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

内置redirect

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

页面跳转

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


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

PHP----重定向和页面跳转_第2张图片

参数

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"改变模板地址。

你可能感兴趣的:(笔记,php)