- ベストアンサー
リファラが取得できない?
- PHPのメールフォームを設置してお試しをした結果、外部から利用はできませんと表示されます。リファラのチェックを設定しています。
- リファラとは、あるWebページのリンクをクリックして別のページに移動したときの、リンク元のページのことです。
- リファラが取得できない問題に対して、ブラウザの設定やファイヤーウォールの設定を確認しましたが、問題は解決されませんでした。対処法を教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>本体?の中に、 >if ($_SERVER['HTTP_REFERER'] != 'http://'.$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] && $refCheck) { >Err('外部から利用は出来ません'); >と記載している箇所を見つけたので これは「外部からの利用ではないこと」つまり「メールフォームのリンク元ホームページと、メールフォームが同じサーバーに存在しているかどうか?」をチェックしようとしています。 なので、この判定は 外部にあるページからメールフォームにリンク⇒エラー メールフォームと同じサーバーにあるページからメールフォームにリンク⇒OK となる事を期待しています。 しかし、$_SERVER['REQUEST_URI']は「プラウザが要求したURL」、つまりメールフォームのURLですから、期待する動作はしません。 この判定文は期待通りには動かず「リンク元とリンク先が同一かどうか?」を判定しますから「常に違う」と言う結果になります。 つまり「リファラのチェックをする」に設定した場合、常に「外部から利用は出来ません」と言うエラーで終了します。 結論は「スクリプトがバグっているから、リファラのチェックをしないに設定して、外部から勝手に利用されるのを覚悟で使うか、外部からの利用をちゃんと制限してくれる、他のメールフォームに変える」です。
その他の回答 (2)
- php504
- ベストアンサー率42% (926/2160)
お使いのセキュリティソフトがリファラをカットしてるんじゃないでしょうか(ノートンはデフォルトでリファラをカットしてた記憶があります)。 メールフォームのファイル名はわかりませんが例えばmail.phpからmail.phpを呼び出せば問題ないはずです
お礼
php504様 こんばんは。ご回答ありがとうございます。 ノートンは使用しておりませんが、セキュリティソフトの設定を 確認しましたが、遮断をしておりませんでした。 スクリプトからスクリプトを呼び出す・・・ どこをいじればよいのかわかりません。 別のスクリプト探します・・・ ありがとうございました。
- jaga999
- ベストアンサー率40% (4/10)
こんにちは。 おそらく対処法としては、一度リファラ機能を無効にしてきちんと動作するか確認してみては如何でしょうか? それできちんと動作するようであればリファラが違うとのことですのでその設定が違うかもしれません。自分のURLを入力する項目やリファラの設定などはありましたか?同じサーバー&ドメインのサイト内の話で間違いないですよね?
お礼
スクリプトがおかしいようで、ダメなようです。 他のメールフォームを探してみます。 有難うございました。
補足
jaga999様 ご回答ありがとうございます。 さきほど、リファラ機能を無効にして試してみましたら ちゃんと動作いたしました。 自分のURLを入力する項目やリファラの設定などは、 リファラ機能を有効か無効の設定しかありません。 同じサーバー&ドメインです。 リファラは完全ではないにしろ有効にしておく方が 安心だと思いましたので困っております。 どうしてもダメでしたら無効にして使用するしかないのでしょうね。
お礼
chie65536様 ご回答ありがとうございます。 スクリプトがおかしいので頑張ってもダメなんですね。 他のメールフォームを探してみます。 ありがとうございました。