【发布时间】:2013-03-07 09:47:33
【问题描述】:
我尝试使用下面的代码检测 https,但全局变量 $_SERVER['https'] 的值始终未定义。
$secure = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'|| $_SERVER['SERVER_PORT'] == 443) ? true : false ;
这部分代码位于 opencart 的头部。 SSL 证书已安装并且安全连接正常工作......有什么想法吗?
【问题讨论】:
-
var_export($_SERVER);见定义,您的特定设置可能会略有不同 -
您确定 HTTPS 在默认端口 443 上运行吗?如果您想将流量重定向到 HTTPS,您可以更好地使用 .htaccess
-
您不应该检查
$_SERVER['HTTPS']是否为空,因为它可能“不”存在。首先检查isset()会更明智。如果未设置$_SERVER['HTTPS_***PREFIX***'],则说明您未使用 HTTPS。 -
顺便说一句,不需要
? true : false位——该表达式已经返回一个布尔值。另外,我认为您的操作顺序正确,但通常最好将(A && B) || C括起来,这样很明显您的意思不是A && (B || C)。 -
好的,谢谢大家,但这个问题实际上是关于 $_SERVER['https'] 的未定义值而不是代码......