PHP跳转函数

/**
* 2011-06-14
* 跳转函数
*/
function Location($url = null) { //默认为空
    $location = null; // 默认为空
    if (! $url) { //当连接真时
        $url = $_SERVER ['PHP_SELF']; //将获取的/test/index.php?id=1 赋值给$url
    //    echo $url;
    } //   ?index/i.php?id=1
    elseif (substr ( $url, 0, 1 ) == '?') { //如果http://localhost/?index/i.php?id=1
        // 则给?./index/i.php?id=1
        $url = $_SERVER ['PHP_SELF'] . $url;

        //   echo $url;
    }
    //当
    if (substr ( $url, 0, 7 ) === 'http://' or substr ( $url, 0, 8 ) === 'https://') {
        //http:// 从0开始数到第7位       //https:// 从0位数到第8位
        $location = $url;
    } else {
        $port = null;
        if ($_SERVER ['SERVER_PORT'] == 443) { //当端口为443时 使用https
            $protocol = 'https://';
        } else {
            $protocol = 'http://'; //或许为80端口
            $checkPoint = explode ( ":", $_SERVER ['HTTP_HOST'] );
            if (count ( $checkPoint ) == 0) {
                $port = ':' . $_SERVER ['SERVER_PORT'];
            }
        }
        $dir = dirname ( $_SERVER ['SCRIPT_NAME'] );
        if ($dir === "/") { //判断有根目录时
            $dir = "";
        }
        if (substr ( $url, 0, 2 ) === './') {
            if ($dir) {
                $location = $protocol . $_SERVER ['HTTP_HOST'] . $port . '/' . $dir . '/' . basename ( $url );
            } else {
                $location = $protocol . $_SERVER ['HTTP_HOST'] . $port . '/' . basename ( $url );
            }
        } elseif (substr ( $url, 0, 1 ) === "/") {
            $location = $protocol . $_SERVER ['HTTP_HOST'] . $port . $url;
        } else {
            $location = $protocol . $_SERVER ['HTTP_HOST'] . $port . $dir . '/' . $url;
        }
    }
    header ( "Location: $location" );
    exit ();
}
//试跳转固定地址http://www.google.com
//Location("http://www.google.com");

//测试跳转固定地址带端口http://www.google.com:80
//Location("http://www.google.com:80");

//https支持测试跳转固定地址https://www.google.com
//Location("https://www.google.com");

//跳转到当前路径下的test.php
//Location("test.php");

//带参数跳转
//Location("stest.php?test=test");

Leave a Reply

(will not be published)