• ベストアンサー

PHPの間違いを指摘していただきたいのですが…

「hogehoge.net以外からのアクセスはindex.phpにリダイレクトする」ということをPHPを使って行いたくて、以下のように書きました。 しかしまだPHP入門者の身、初歩的なミスでつまづいて いるようで、うまく動作しません。 自分では!の使い方ではないかと思うのですが、検索しても!がワードとして認識されないので正確な位置がわからずにいます。もっと根本的な間違いでしたらすみません。 <? if(!eregi("hogehoge.net",$_SERVER["HTTP_HOST"])){ header("Location: index.php"); } ?> バージョンは4.3.11です。 もっといい書き方がある、という方はそちらも教えて頂ければ幸いです。宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

1.「hogehoge.net以外からのアクセス」であれば、見るべき$_SERVER変数は'HTTP_REFERER'ですね。HTTP_HOSTはブラウザからのリクエスト先のURL(host.domain)が入ります。 質問のタイプミスで「hogehoge.net以外"へ"のアクセス」でしたらこれで良いと思います。 2.eregiよりはpreg_match関数の方が速いそうです。preg_match("/hogehoge\.net/i",$_SERVER~って感じになるかな。 3.header関数でリダイレクトさせる場合のURLは絶対URLにして下さい。相対URLはファイル名だけですと、ブラウザによってはリダイレクトできない場合があります。

goonick
質問者

お礼

お早い回答ありがとうございました。 REFERERとpreg_matchさらに絶対URLにして、うまくいきました。 PHPはこれから精進しますので、またお世話になるかもしれませんが、その時は宜しくお願い致します。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 !はnotになります。 現在の状況だとeregiの返り値がfalseの場合 (trueの逆) headerを実行するようになっています。 !をはずしてみてはいかがでしょう?

goonick
質問者

お礼

お早い回答ありがとうございました。

関連するQ&A