【发布时间】:2016-01-10 11:11:10
【问题描述】:
我想检测用户是通过 http 还是 https 导航 并在网站的某些区域切换到 https。问题是 我的服务器不显示 $_SERVER['HTTPS'] 所以我想我会 必须配置 php.ini 才能显示它。
我似乎无法弄清楚,要在 php 上更改哪些值 ini 来证明这一点。
谢谢。
编辑:我不是想找到检测 https 使用的替代方法。 我在问如何编辑 php.ini 以便显示 $_SERVER['HTTPS'] 我访问 https://
时的值Edit2:可能还不够清楚。 $_SERVER['HTTPS'] 根本不存在
更新/回答: 感谢@Sheriff 我放了
fastcgi_param HTTPS on;
fastcgi_param HTTP_SCHEME https;
在我的虚拟主机文件的这个块内 位置 ~ .php$ { }
现在 $_SERVER 显示
[HTTPS] => on
[HTTP_SCHEME] => https
以前它不起作用,因为我把 fastcgi 参数值 在服务器块中。傻我。
【问题讨论】:
-
$_SERVER['HTTPS']仅在通过安全套接字层 (SSL) 连接访问服务器时显示 -
是的,我通过 https 访问过它仍然没有显示。
-
@bornie 并非所有服务器都填充
HTTPS元素。最好检查一下是否通过端口 443 访问该站点。所使用的端口几乎总是被填充。 -
是的,但是“$_SERVER['SERVER_PORT'] 可能会很棘手...例如 ispconfig 使用端口 81 作为安全端口”
-
您使用的是什么网络服务器?正如@iam-decoder 指出的那样,并非所有服务器都填充该元素。在 Apache 中,这将是
SetEnv HTTPS on