我的服务器上有我的网站
http://www.myserver.uk.com
Run Code Online (Sandbox Code Playgroud)
为此,我有两个域:
http://one.com
Run Code Online (Sandbox Code Playgroud)
和
http://two.com
Run Code Online (Sandbox Code Playgroud)
我想用PHP当前域,但如果我使用$_SERVER['HTTP_HOST']然后这给我看
myserver.uk.com
Run Code Online (Sandbox Code Playgroud)
代替:
one.com or two.com
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得域名,而不是服务器名称?我有PHP版本5.2
one*_*alf 161
试着用这个: $_SERVER['SERVER_NAME']
或解析
$_SERVER['REQUEST_URI']
Run Code Online (Sandbox Code Playgroud)
编辑:
K. *_*erg 55
最好的用途是
echo $_SERVER['HTTP_HOST'];
Run Code Online (Sandbox Code Playgroud)
并且可以像这样使用
if(strpos( $_SERVER['HTTP_HOST'], 'banana.com') !== false){
echo "Yes this is indeed the banana.com domain";
}
Run Code Online (Sandbox Code Playgroud)
下面的代码是一个很好的方法,可以在结构化的HTML输出中查看$ _SERVER中的所有变量,并突出显示关键字,并在执行后直接停止.因为我有时会忘记自己使用哪一个 - 我认为这可以很漂亮.
<?php
// change banana.com to the domain you were looking for..
$wordToHighlight= "banana.com";
$serverVarHighlighted = str_replace( $wordToHighlight, '<span style=\'background-color:#883399; color: #FFFFFF;\'>'. $wordToHighlight .'</span>', $_SERVER );
echo "<pre>";
print_r( $serverVarHighlighted );
echo "</pre>";
exit();
?>
Run Code Online (Sandbox Code Playgroud)
小智 39
使用$_SERVER['HTTP_HOST']获取我(子域.)maindomain.extension.对我来说似乎是最简单的解决方案.
编辑:如果您实际上是通过iFrame"重定向",则可以添加一个表示域的get参数.
<iframe src="myserver.uk.com?domain=one.com"/>
Run Code Online (Sandbox Code Playgroud)
然后,您可以设置会话变量,以便在整个应用程序中保留此数据.
wp-*_*com 12
我不知道这个答案如何在没有提到手头的安全问题的情况下收到了成千上万的观点.
$_SERVER['HTTP_HOST']
Run Code Online (Sandbox Code Playgroud)
这会从请求标头中获取域,该标头可供黑客操纵,并可能导致缓存中毒.
$_SERVER['SERVER_NAME']
Run Code Online (Sandbox Code Playgroud)
默认的Apache设置已关闭usecanonicalname,填充$_SERVER['SERVER_NAME']的是相同的标头$_SERVER['HTTP_HOST'],无论如何都会使用(加上端口).这是一些恶意的例子.如果启用了usecanonicalname,那么它更安全,但我不知道这种配置是否适用于大多数环境.
注意事项:
唯一有保障的安全方法是将域存储在您可以访问的位置.
许多框架已经为您完成此操作,因此请参阅特定框架的文档.如果您没有使用框架,则以下任何方法都可以使用:
+----------------------------------------------+------------------------+ | Secure Methods of Storing The Current Domain | Default/Recommended In | +----------------------------------------------+------------------------+ | Config file | Joomla, Drupal/Symfony | | Database | WordPress | | Environmental variable | Laravel | | Service registry | Kubernetes DNS | +----------------------------------------------+------------------------+
如果您使用的是WordPress,则可以安全地获取域名,如下所示:
$urlparts = parse_url(home_url());
$domain = $urlparts['host'];
Run Code Online (Sandbox Code Playgroud)
(但是如果你在WordPress中构建一个URL,只需使用home_url或site_url,或任何其他URL函数.)
Sar*_*kar 10
获取域名:
$_SERVER['HTTP_HOST']
Run Code Online (Sandbox Code Playgroud)
带有协议的域:
$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']), 'https') === FALSE ? 'http' : 'https';
$domainLink = $protocol . '://' . $_SERVER['HTTP_HOST'];
Run Code Online (Sandbox Code Playgroud)
协议、域和查询字符串总计:
$url = $protocol . '://' . $_SERVER['HTTP_HOST'] . '?' . $_SERVER['QUERY_STRING'];
Run Code Online (Sandbox Code Playgroud)
**由于 $_SERVER['SERVER_NAME'] 对于多域托管不可靠!
| 归档时间: |
|
| 查看次数: |
303418 次 |
| 最近记录: |