好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
如何得知是否正在使用HTTPS协议(不通过读取[_SERVER['HTTPS']字段) 关闭 返回上一级  

如何得知是否正在使用HTTPS协议(不通过读取[_SERVER['HTTPS']字段)
+ 查看更多

发布日期:2018-03-26 14:12
分类:PHP
浏览次数:42
我在网上找到一些答案说,如果服务器在使用HTTPS安全协议,需要检查$_SERVER('HTTPS'), 我的问题是有时在一些服务器上,$_SERVER['HTTPS']会被看作未定义的变量结果导致错误。是有其他什么变量可以被使用吗?
简单说,我用下面这段代码判断是不是HTTPS连接:
if(isset($_SERVER['HTTPS'])) {
    if ($_SERVER['HTTPS'] == "on") {
        $secure_connection = true;
    }
}

回答

“如果PHP脚本被HTTPS安全协议访问的话,那么你需要设置一个非空值。” 所以HTTPS确实是on的时候仍会返回false,你想知道$_SERVER['HTTPS']是否存在或是否为非空,有时当HTTPS没有为某指定服务器正确设置时,你还可以尝试检查这个参数
$_SERVER['SERVER_PORT']  == 443
但是注意一些服务器也会把$_SERVER['HTTPS']设置为非空值,所以确保也检查这个变量。
参考:Documentation for $_SERVER and $HTTP_SERVER_VARS
综合起来,代码可以这样写:
function isSecure() {
  return
    (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
    || $_SERVER['SERVER_PORT'] == 443;
}
上一篇在PHP中如何调用一个JavaScript函数?
PHP如何在删除数组元素后,重新为数组建立索引?¶下一篇
下一篇PHP如何在删除数组元素后,重新为数组建立索引?¶

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2017  苏州卡达网络科技有限公司 好问 GOODQ.TOP 备案号:苏ICP备09008221号-5