dポイントプレゼントキャンペーン実施中!

初めまして。PHPのメールフォームを設置し
お試しをしてみたら、外部から利用はできません、と表示されます。
リファラのチェックをする、に設定しています。
(お借りした所ではこういう質問を受け付けてもらえないので
こちらでお伺いしております)

リファラの意味がわからず調べてみましたが、
「あるWebページのリンクをクリックして別のページに移動したときの、リンク元のページのこと。Webサーバのアクセスログに記録される項目の一つ。」
リファラとは 【referer】 - 意味・解説 : IT用語辞典
<http://e-words.jp/w/E383AAE38395E382A1E383A9.html>
とあり、自分のページからメールフォームにリンクしているのは
大丈夫なのではないかと思っていたのですが・・・

他にブラウザの設定やファイヤーウォールの設定も見てみましたが
リファラを消したりすることも無いようです。

本体?の中に、
if ($_SERVER['HTTP_REFERER'] != 'http://'.$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] && $refCheck) {
Err('外部から利用は出来ません');
と記載している箇所を見つけたので、http://の箇所に自分のアドレスを入れるのかと思い試してみましたがダメでした。

拙い説明でわかりづらいところばかりですが
おわかりになる方がおられましたら、対処法などお教え下さい。
宜しくお願い致します。

A 回答 (3件)

>本体?の中に、


>if ($_SERVER['HTTP_REFERER'] != 'http://'.$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] && $refCheck) {
>Err('外部から利用は出来ません');
>と記載している箇所を見つけたので

これは「外部からの利用ではないこと」つまり「メールフォームのリンク元ホームページと、メールフォームが同じサーバーに存在しているかどうか?」をチェックしようとしています。

なので、この判定は
外部にあるページからメールフォームにリンク⇒エラー
メールフォームと同じサーバーにあるページからメールフォームにリンク⇒OK
となる事を期待しています。

しかし、$_SERVER['REQUEST_URI']は「プラウザが要求したURL」、つまりメールフォームのURLですから、期待する動作はしません。

この判定文は期待通りには動かず「リンク元とリンク先が同一かどうか?」を判定しますから「常に違う」と言う結果になります。

つまり「リファラのチェックをする」に設定した場合、常に「外部から利用は出来ません」と言うエラーで終了します。

結論は「スクリプトがバグっているから、リファラのチェックをしないに設定して、外部から勝手に利用されるのを覚悟で使うか、外部からの利用をちゃんと制限してくれる、他のメールフォームに変える」です。
    • good
    • 0
この回答へのお礼

chie65536様
ご回答ありがとうございます。
スクリプトがおかしいので頑張ってもダメなんですね。
他のメールフォームを探してみます。
ありがとうございました。

お礼日時:2008/12/04 16:51

お使いのセキュリティソフトがリファラをカットしてるんじゃないでしょうか(ノートンはデフォルトでリファラをカットしてた記憶があります)。


メールフォームのファイル名はわかりませんが例えばmail.phpからmail.phpを呼び出せば問題ないはずです
    • good
    • 0
この回答へのお礼

php504様
こんばんは。ご回答ありがとうございます。
ノートンは使用しておりませんが、セキュリティソフトの設定を
確認しましたが、遮断をしておりませんでした。

スクリプトからスクリプトを呼び出す・・・
どこをいじればよいのかわかりません。
別のスクリプト探します・・・
ありがとうございました。

お礼日時:2008/12/04 23:45

こんにちは。



おそらく対処法としては、一度リファラ機能を無効にしてきちんと動作するか確認してみては如何でしょうか?

それできちんと動作するようであればリファラが違うとのことですのでその設定が違うかもしれません。自分のURLを入力する項目やリファラの設定などはありましたか?同じサーバー&ドメインのサイト内の話で間違いないですよね?

この回答への補足

jaga999様

ご回答ありがとうございます。
さきほど、リファラ機能を無効にして試してみましたら
ちゃんと動作いたしました。

自分のURLを入力する項目やリファラの設定などは、
リファラ機能を有効か無効の設定しかありません。
同じサーバー&ドメインです。

リファラは完全ではないにしろ有効にしておく方が
安心だと思いましたので困っております。
どうしてもダメでしたら無効にして使用するしかないのでしょうね。

補足日時:2008/12/04 15:55
    • good
    • 0
この回答へのお礼

スクリプトがおかしいようで、ダメなようです。
他のメールフォームを探してみます。
有難うございました。

お礼日時:2008/12/04 16:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!