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のケースであり、お使いのサーバによって書き方は異なりますのでご注意ください。
こういう機会ってよくあると思うから、標準関数でできればいいのになぁ~。通信レベルの領域だと思うので難しいのかもしれませんが。
コメント