CORESERVERとXREAで、PHPからSSLかどうか判別する。

CORESERVERで、通常のページとSSLページで処理を変えたいという状況が発生しました。

サーバの環境変数の何かで、通常のページとSSLページで違うところがあれば、そこら辺で振り分けようかな~と思って、phpinfo()をチェック。

見つかった使えそうな環境変数

その結果、SSLの時のみ以下のような環境変数がセットされている模様です。

$_SERVER["HTTP_CACHE_CONTROL"]→ max-age=259200
$_SERVER["HTTP_VIA"]→ 1.1 ss1.coressl.jp:3128 (squid/2.5.STABLE14)
$_SERVER["HTTP_X_FORWARDED_FOR"]→ [ ipアドレス ]

なので今回はHTTP_VIAで判別することにしてみました。

function is_ssl() {
  if (strpos(@$_SERVER['HTTP_VIA'], 'ss1.coressl.jp:3128') !== false ) {
    return true;
  }
  if (strpos(@$_SERVER['HTTP_VIA'], 'ss2.xrea.com:3128') !== false ) {
    return true;
  }
  if (strpos(@$_SERVER['HTTP_VIA'], 'ss1.xrea.com:3128') !== false ) {
    return true;
  }
  return false;
}

HTTP_VIAが空でないだけでもいいかもしれませんが、一応文字列で判別しました。
なお、これはCORESERVERとXREAのケースであり、お使いのサーバによって書き方は異なりますのでご注意ください。

こういう機会ってよくあると思うから、標準関数でできればいいのになぁ~。通信レベルの領域だと思うので難しいのかもしれませんが。

コメント

タイトルとURLをコピーしました