- ベストアンサー
PHPの間違いを指摘していただきたいのですが…
「hogehoge.net以外からのアクセスはindex.phpにリダイレクトする」ということをPHPを使って行いたくて、以下のように書きました。 しかしまだPHP入門者の身、初歩的なミスでつまづいて いるようで、うまく動作しません。 自分では!の使い方ではないかと思うのですが、検索しても!がワードとして認識されないので正確な位置がわからずにいます。もっと根本的な間違いでしたらすみません。 <? if(!eregi("hogehoge.net",$_SERVER["HTTP_HOST"])){ header("Location: index.php"); } ?> バージョンは4.3.11です。 もっといい書き方がある、という方はそちらも教えて頂ければ幸いです。宜しくお願い致します。
- みんなの回答 (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はファイル名だけですと、ブラウザによってはリダイレクトできない場合があります。
その他の回答 (1)
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 !はnotになります。 現在の状況だとeregiの返り値がfalseの場合 (trueの逆) headerを実行するようになっています。 !をはずしてみてはいかがでしょう?
お礼
お早い回答ありがとうございました。
お礼
お早い回答ありがとうございました。 REFERERとpreg_matchさらに絶対URLにして、うまくいきました。 PHPはこれから精進しますので、またお世話になるかもしれませんが、その時は宜しくお願い致します。