Hostヘッダの妥当性確認に $_SERVER['SERVER_NAME'] を用いる方法はよくありません。 その理由は、多くの場合、$_SERVER['SERVER_NAME'] は $_SERVER['HTTP_HOST'] と同じ値を示すからです。すなわち、テストの意味がありません。 もう少し厳密に言うと、Apacheの UseCanonicalName というディレクティブが On の場合、$_SERVER['SERVER_NAME'] は Apacheの ServerName を返します。これは期待された挙動です。一方、UseCanonicalName がOffの場合は、$_SERVER['SERVER_NAME'] はHostヘッダ(ポート番号は除く)を返します。 そして、UseCanonicalName のデフォルト値は、Apache 2.0までは On、Apache 2.2