在实现网址跳转时,尤其是跨域网址跳转时,跳转完成后跳转回当前页面,需要先获取当前网址URL,以参数形式传递到跳转目标地址,跳转目标地址执行完后,再跳转回当前网址。
获取当前网址的完整URL代码如下:
/**
* 获取当前完整URL
*
* @return string
*/
function get_url() {
$sys_protocal = isset ( $_SERVER ['SERVER_PORT'] ) && $_SERVER ['SERVER_PORT'] == '443' ? 'https://' : 'http://';//根据当前端口,判断是http还是https
$php_self = $_SERVER ['PHP_SELF'] ? $_SERVER ['PHP_SELF'] : $_SERVER ['SCRIPT_NAME'];//获取当前网页地址
$path_info = isset ( $_SERVER ['PATH_INFO'] ) ? $_SERVER ['PATH_INFO'] : '';//获取path_info信息
$relate_url = isset ( $_SERVER ['REQUEST_URI'] ) ? $_SERVER ['REQUEST_URI'] : $php_self . (isset ( $_SERVER ['QUERY_STRING'] ) ? '?' . $_SERVER ['QUERY_STRING'] : $path_info);//获取除域名外的完整URL,获取不到php文件(如启用了pathinfo),就获取文件实际地址和参数
return $sys_protocal . (isset ( $_SERVER ['HTTP_HOST'] ) ? $_SERVER ['HTTP_HOST'] : '') . $relate_url;//返回完成的URL
}
提示
1.该方法主要用于获取微信授权时,微信授权后跳转回当前页面,需要用该方法获取当前页面完整URL。其它场景如未登录跳转到登录页,也可以用该方法获取未登录前访问的页面URL,以便登录完成后自动跳转。
2.该方法没有除系统函数以外的依赖,可以直接公共方法库中,供全局代码调用。
3.使用实例
/**
* 获取微信授权
*/
private function toGetAuth() {
header ( "Content-type:text/html;charset=utf-8" );
$url = "http://www.xxx.com/wxapi.php?c=Auth&a=auth_userinfo&wxappuser=" . C ( 'WXAPI_USER' ) . "&callback=" . urlencode ( get_url () );//注意,一般在参数中传递网址需要使用url编码
// 重定向浏览器
header ( "Location:" . $url );
exit ();
}