> 백엔드 개발 > PHP 튜토리얼 > TP框架的 redirect方法是如何实现跳转的?一看源码,完全不能理解啊

TP框架的 redirect方法是如何实现跳转的?一看源码,完全不能理解啊

WBOY
풀어 주다: 2016-06-23 13:53:48
원래의
1164명이 탐색했습니다.

protected function redirect($url,$params=array(),$delay=0,$msg='') {
$url = U($url,$params);
redirect($url,$delay,$msg);
}



先生存一个url,然后递归传入第三第四个参数。。


它的跳转到底是怎么实现的???


回复讨论(解决方案)

那你去看一下 redirect 函数的定义呀

函数体内的redirect 是调用了一个函数:

参见 框架内置的functions.php文件
redirect
说明:
void redirect($url, $time=0, $msg='')
URL重定向
源码:

    function redirect($url, $time=0, $msg='') {        //多行URL地址支持        $url = str_replace(array("\n", "\r"), '', $url);        if (empty($msg))            $msg = "系统将在{$time}秒之后自动跳转到{$url}!";        if (!headers_sent()) {            // redirect            if (0 === $time) {                header('Location: ' . $url);            } else {                header("refresh:{$time};url={$url}");                echo($msg);            }            exit();        } else {            $str = "<meta http-equiv='Refresh' content='{$time};URL={$url}'>";            if ($time != 0)                $str .= $msg;            exit($str);        }    }
로그인 후 복사

// URL重定向function redirect($url, $time=0, $msg='') {    //多行URL地址支持    $url = str_replace(array("\n", "\r"), '', $url);    if (empty($msg))        $msg = "系统将在{$time}秒之后自动跳转到{$url}!";    if (!headers_sent()) { //如果标头没有发出        // redirect        if (0 === $time) {            header('Location: ' . $url); //如果没有指定延时时间,则发一个跳转标头        } else {            header("refresh:{$time};url={$url}");//如果制定了延时时间,则发一个延时刷新的标头            echo($msg);        }        exit();    } else { //否则就发送 meta 标记,含义同上        $str = "<meta http-equiv='Refresh' content='{$time};URL={$url}'>";        if ($time != 0)            $str .= $msg;        exit($str);    }}
로그인 후 복사

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿