php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别

场景:www.baidu.com和baidu.com,这里一个是二级域名,一个是一级域名,在开发中,是要特别注意的,尤其是微信的接口。

在tp中,如下代码有什么问题呢?

$url="http://".$_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']==80?'':':'.$_SERVER['SERVER_PORT']).__ROOT__.__SELF__;

如上代码获取当前访问的URL,这样获取是有问题的,访问www.baidu.com,获取到的是baidu.com

改进如下:

如下代码,只适用于TP

$url="http://".$_SERVER['HTTP_HOST'].($_SERVER['SERVER_PORT']==80?'':':'.$_SERVER['SERVER_PORT']).__ROOT__.__SELF__;

如下为获取当前访问的URL的通用方法

 $thisurl = siteurl(). $_SERVER["REQUEST_URI"];
 function siteurl($root = null, $type='http')
{
    $dir = str_replace(array(realpath($_SERVER['DOCUMENT_ROOT']), '\\'), array('', '/'), realpath(dirname($_SERVER["SCRIPT_FILENAME"])));
    return $type."://".$_SERVER["HTTP_HOST"].str_replace('//', '/', '/'.$dir.'/');
}

参考链接:http://it.oyksoft.com/post/3158/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值