
初めまして。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://の箇所に自分のアドレスを入れるのかと思い試してみましたがダメでした。
拙い説明でわかりづらいところばかりですが
おわかりになる方がおられましたら、対処法などお教え下さい。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
>本体?の中に、
>if ($_SERVER['HTTP_REFERER'] != 'http://'.$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] && $refCheck) {
>Err('外部から利用は出来ません');
>と記載している箇所を見つけたので
これは「外部からの利用ではないこと」つまり「メールフォームのリンク元ホームページと、メールフォームが同じサーバーに存在しているかどうか?」をチェックしようとしています。
なので、この判定は
外部にあるページからメールフォームにリンク⇒エラー
メールフォームと同じサーバーにあるページからメールフォームにリンク⇒OK
となる事を期待しています。
しかし、$_SERVER['REQUEST_URI']は「プラウザが要求したURL」、つまりメールフォームのURLですから、期待する動作はしません。
この判定文は期待通りには動かず「リンク元とリンク先が同一かどうか?」を判定しますから「常に違う」と言う結果になります。
つまり「リファラのチェックをする」に設定した場合、常に「外部から利用は出来ません」と言うエラーで終了します。
結論は「スクリプトがバグっているから、リファラのチェックをしないに設定して、外部から勝手に利用されるのを覚悟で使うか、外部からの利用をちゃんと制限してくれる、他のメールフォームに変える」です。
chie65536様
ご回答ありがとうございます。
スクリプトがおかしいので頑張ってもダメなんですね。
他のメールフォームを探してみます。
ありがとうございました。
No.3
- 回答日時:
お使いのセキュリティソフトがリファラをカットしてるんじゃないでしょうか(ノートンはデフォルトでリファラをカットしてた記憶があります)。
メールフォームのファイル名はわかりませんが例えばmail.phpからmail.phpを呼び出せば問題ないはずです
php504様
こんばんは。ご回答ありがとうございます。
ノートンは使用しておりませんが、セキュリティソフトの設定を
確認しましたが、遮断をしておりませんでした。
スクリプトからスクリプトを呼び出す・・・
どこをいじればよいのかわかりません。
別のスクリプト探します・・・
ありがとうございました。
No.1
- 回答日時:
こんにちは。
おそらく対処法としては、一度リファラ機能を無効にしてきちんと動作するか確認してみては如何でしょうか?
それできちんと動作するようであればリファラが違うとのことですのでその設定が違うかもしれません。自分のURLを入力する項目やリファラの設定などはありましたか?同じサーバー&ドメインのサイト内の話で間違いないですよね?
この回答への補足
jaga999様
ご回答ありがとうございます。
さきほど、リファラ機能を無効にして試してみましたら
ちゃんと動作いたしました。
自分のURLを入力する項目やリファラの設定などは、
リファラ機能を有効か無効の設定しかありません。
同じサーバー&ドメインです。
リファラは完全ではないにしろ有効にしておく方が
安心だと思いましたので困っております。
どうしてもダメでしたら無効にして使用するしかないのでしょうね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SendMailがエラーを返さない
-
mail関数を使うと遅いので
-
ループの中で mailItemObj.Disp...
-
CSV出力にHTMLが入ってしまう
-
.phpファイルが、表示されない
-
PHPからメールを送る@さくらイ...
-
centos6のlogにscript not foun...
-
ob_end_clean と ob_clean の違...
-
php.ini を設定を変更すると再...
-
CFileDialogの最初のディレクト...
-
IIS+PHP スクリプトから仮想デ...
-
glide3x.dllがないと表示されま...
-
PHPのif文でその処理を途中で抜...
-
PHP PDOライブラリが読み込まれ...
-
include先でのinclude元の変数...
-
try~catch構文は、どういうメ...
-
FTPコマンドでディレクトリごと...
-
Notice: Undefined offset: 1を...
-
PHPでメールを受信するには?
-
テキストボックスにデータベー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
submitボタンの二重送信について
-
ループの中で mailItemObj.Disp...
-
HTMLについて質問ですが。
-
VB6にてメールを送信する方法
-
メール送信できない
-
mailto:について質問です。
-
メールのヘッダ(From)について
-
javamailで220の応答が遅い
-
別のサーバーのPHPへ書きこむには
-
AccessのDoCmd.SendObjectについて
-
powerbuilderのメール機能について
-
pythonプログラム
-
WSHでソフトのアンインストール...
-
メール送信
-
【エクセルVBA】メール送信前に...
-
チェックボックスで指定してメ...
-
UWSCにつきまして
-
存在しないメールアドレスかど...
-
VB.NETでフリーメールアドレス...
-
Windowsサーバーでメール送信プ...
おすすめ情報