PHP:HTTP或HTTPS?
我怎么能告诉如果一个PHP页面通过http或https访问?
如果请求是通过HTTPS发送的,那么$ _SERVER超全局 – $ _SERVER ['HTTPS']将会有一个额外的参数。 你可以检查是否设置
if( isset($_SERVER['HTTPS'] ) ) {
如果您的请求是通过HTTPS发送的,则您将有一个名为“HTTPS”的额外服务器variables
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { //HTTPS }
$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'?'https':'http'; $protocol = isset($_SERVER["HTTPS"]) ? 'https' : 'http';
这些都应该工作
这可能会变得更复杂,取决于PHP在你的环境中的位置,因为你的问题是相当广泛的。 这可能取决于是否有负载平衡器以及如何configuration。 这里有几个相关的问题:
- 如果调用者未使用HTTPS,如何防止访问PHP文件?
- 检测服务器上的HTTPS vs HTTP发回没有用
$_SERVER['HTTPS']
如果请求是通过HTTPS发送的,则将包含“非空”值
PHP服务器variables
你应该可以通过检查$_SERVER['HTTPS']
的值来做到这一点(它只能在使用https时设置)。