为了账号安全,请及时绑定邮箱和手机立即绑定

PHP获取站点URL协议-http与https

PHP获取站点URL协议-http与https

PHP
潇湘沐 2019-12-21 11:27:51
我编写了一个小函数来建立当前的站点url协议,但是我没有SSL,也不知道如何测试它是否可以在https下工作。你能告诉我这是否正确吗?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() );是否有必要像上面那样做?还是我可以像上面那样做?:function siteURL(){    $protocol = 'http://';    $domainName = $_SERVER['HTTP_HOST'].'/'    return $protocol.$domainName;}define( 'SITE_URL', siteURL() );在SSL下,即使定位标记网址使用的是http,服务器也不会自动将网址转换为https吗?是否需要检查协议?
查看完整描述

3 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

这不是自动的。您的最高职能看起来还不错。


查看完整回答
反对 回复 2019-12-21
?
萧十郎

TA贡献1815条经验 获得超12个赞

我知道已经很晚了,尽管有解决此问题的简便方法!其他解决方案非常混乱。这就是我会做的:


$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === 0 ? 'https://' : 'http://';

...或者甚至无条件,如果您愿意:


$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,strpos( $_SERVER["SERVER_PROTOCOL"],'/'))).'://';

看一下 $_SERVER["SERVER_PROTOCOL"]


查看完整回答
反对 回复 2019-12-21
?
哔哔one

TA贡献1854条经验 获得超8个赞

这对我有用


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://';

}


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 741 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信