ThinkPHP中重定向(redirect方法)

时间:2024-11-07 08:15:32

redirect 重定向的通用语法为:redirect(url,params=array(),delay=0,msg='')

用法:

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

    $url = U($url,$params);

    redirect($url,$delay,$msg);

}

源码:参见框架内置的文件

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($time == 0){

            header('Location:'.$url);

        }else{

            header("refresh:{$time};url={$url}");

            echo($msg);

        }

        exit();

    }else{

        $str="<metahttp-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($time == 0){

            header('Location:'.$url);//如果没有指定延时时间,则发一个跳转标头

        }else{

            header("refresh:{$time};url={$url}");//如果制定了延时时间,则发一个延时刷新的标头

            echo($msg);

        }

        exit();

    }else{ //否则就发送meta标记,含义同上

        $str="<metahttp-equiv='Refresh'content='{$time};URL={$url}'>";

        if($time != 0) $str.=$msg;

        exit($str);

    }

}
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($time == 0){

            header('Location:'.$url);

        }else{

            header("refresh:{$time};url={$url}");

            echo($msg);

        }

        exit();

    }else{

        $str="<metahttp-equiv='Refresh'content='{$time};URL={$url}'>";

        if($time != 0) $str.=$msg;

        exit($str);

    }

}