さくらで共有SSL使用時にHTTPS接続か判別する
さくらのレンタルサーバーで接続がHTTPSであるかをPHPを使って見分ける(判別する)ためのメモ。
さくらで共有SSL使用時にHTTPS接続か判別する
前回の更新からかなり時間が経ってしまったので、今回はちょっとした記事を。
正直なところ現在のサイトの前身となる「Windows Vista 使いこなし」の開設から4年、当時とは違って忙しかったりネタ切れだったりで更新頻度が落ちてます…
でも放置するわけにはいかないので、最近のPC作業からネタを絞り出してみました。
ということで、今回はさくらのレンタルサーバー環境でHTTPSで接続しているかどうかの判別をPHPで行う方法です。
さくらではHTTPとHTTPSの両方でポート番号が80なので、ポート番号で接続を判別することができません。
そのため、検索すると出てくる一般的な方法では正常に接続を判別できないという問題があります。
しかし、さくらではHTTPS接続時に(記事公開時点で)さくら特有の変数「HTTP_X_SAKURA_FORWARDED_FOR」を出力しているようなので、これを判別に使います。
この変数の存在を確認する簡単なプログラム例は次の通り。
<?php
if(isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']))
{
print "有効";
}
else
{
print "無効";
}
?>
PHPのマニュアルには、「isset」について次のように説明されています。
変数がセットされており、それが NULL でないことを調べます。
変数が、unset() により割当を解除された場合、 何も値が設定されていない状態になります。 NULLに設定されている変数を調べた場合、 isset() はFALSEを返します。 NULLバイト(“�”)はPHPの定数 NULLと等価ではないことにも注意してください。
複数のパラメータを渡した場合は、isset() はそれらすべてがセットされている場合にのみ TRUE を返します。 左から順に評価を行い、セットされていない変数があった時点で処理を終了します。
つまり、対象となる変数「HTTP_X_SAKURA_FORWARDED_FOR」が存在すれば「有効」と出力され、HTTPS接続していることが分かります。
何かいいネタが見つかるまではちょっとした記事で更新を継続していくことになりそうです…
今回はこの辺で。
では、また…