首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP Get站点URL协议- http vs https

PHP Get站点URL协议- http vs https
EN

Stack Overflow用户
提问于 2010-12-22 03:30:18
回答 18查看 267.3K关注 0票数 217

我已经写了一个小函数来建立当前的站点url协议,但我没有SSL,也不知道如何测试它是否在https下工作。你能告诉我这是否正确吗?

代码语言:javascript
复制
function siteURL()
{
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $domainName = $_SERVER['HTTP_HOST'].'/';
    return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );

有必要像上面那样做吗?或者我可以像这样做吗?:

代码语言:javascript
复制
function siteURL()
{
    $protocol = 'http://';
    $domainName = $_SERVER['HTTP_HOST'].'/'
    return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );

在SSL下,即使锚标签url使用http,服务器也不会自动将url转换为https吗?是否需要检查协议?

谢谢!

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2010-12-22 03:38:31

它不是自动的。你的top函数看起来没问题。

票数 77
EN

Stack Overflow用户

发布于 2013-02-27 07:21:24

我知道现在已经很晚了,尽管有一个更方便的方法来解决这类问题!其他的解决方案相当混乱;我是这样做的:

代码语言:javascript
复制
$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === 0 ? 'https://' : 'http://';

...or即使没有条件,如果你喜欢的话:

代码语言:javascript
复制
$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,strpos( $_SERVER["SERVER_PROTOCOL"],'/'))).'://';

看看

票数 87
EN

Stack Overflow用户

发布于 2013-01-11 09:17:39

这对我很管用

代码语言:javascript
复制
if (isset($_SERVER['HTTPS']) &&
    ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
    isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
    $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
  $protocol = 'https://';
}
else {
  $protocol = 'http://';
}
票数 82
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4503135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档