使用PHP检测SSL

时间:2011-09-05 05:32:40

标签: php ssl https

  

可能重复:
  How To Find Out If You are Using HTTPS Without $_SERVER['HTTPS']

我在网上寻找检测服务器是否使用HTTPS连接的方法,但没有一个网站似乎有所有答案(以及一些不同的答案)。究竟是什么方法来检测服务器是否正在使用与PHP的HTTPS连接?我需要了解几种检测SSL的方法,因为我的一些脚本是重新分发的,各种服务器处理的方式不同。

2 个答案:

答案 0 :(得分:73)

  

$_SERVER['HTTPS']

     

如果通过HTTPS协议查询脚本,则设置为非空值   注意:请注意,当ISAPI与IIS一起使用时,如果请求不是通过HTTPS协议进行的,则该值将 off

     

http://www.php.net/manual/en/reserved.variables.server.php

Ergo,这样做:

if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
    // SSL connection
}

答案 1 :(得分:16)

WordPress的核心is_ssl()函数还添加了对服务器端口的检查:

function is_ssl() {
    if ( isset($_SERVER['HTTPS']) ) {
        if ( 'on' == strtolower($_SERVER['HTTPS']) )
            return true;
        if ( '1' == $_SERVER['HTTPS'] )
            return true;
    } elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
        return true;
    }
    return false;
}