2020-12-08 23:30

PHPでHTTP通信かHTTPS通信(SSL通信)なのかを判断する方法!


PHPで、HTTP通信かHTTPS通信(SSL通信)かを判断するためにはどうすればいいのか、下記に記述します。
意外と簡単に判断できますが、Webサーバの環境によって判断の仕方が異なるのは厄介ですね。。。

サンプルプログラム

function is_ssl () {
    // Apache
    if ( isset($_SERVER['HTTPS']) ) {
        return ( $_SERVER['HTTPS'] === 'on' || $_SERVER['HTTPS'] === '1' ) ? true : false ;
    // IIS
    } else if ( isset($_SERVER['SSL']) ) {
        return ( $_SERVER['SSL'] === 'on' ) ? true : false ;
    // リバースプロキシ (nginx 等)
    } else if ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) ) {
        return ( strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) === 'https' ) ? true : false ;
    // リバースプロキシ (nginx 等)
    } else if ( isset($_SERVER['HTTP_X_FORWARDED_PORT']) ) {
        return ( $_SERVER['HTTP_X_FORWARDED_PORT'] === '443' ) ? true : false ;
    // ポート番号がSSLの番号の場合
    } else if ( isset($_SERVER['SERVER_PORT']) ) {
        return ( $_SERVER['SERVER_PORT'] === '443' ) ? true : false ;
    }
    // 以上の条件に該当しない場合は、HTTP通信と判断する
        return false;
}
PHP

サイト内検索

Twitterタイムライン

スポンサードリンク

Writer

よしはら  慶  よしとき

企業にお勤めのシステムエンジニア。
山本彩さんが好き。(可愛いよね?)