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)