
初めまして。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ランキング
-
mb_send_mailで複数宛てにtoで送信
-
java Mail で特殊文字が文字化...
-
存在しないメールアドレスかど...
-
phpのheader("Location:#pos")...
-
*.php、*.php3、*.phtmlの違い
-
phpのextension_dirを複数指定...
-
PHP PDOライブラリが読み込まれ...
-
phpでメール送信できません 原...
-
header(Location:~)で$_SESS...
-
<A href ~ と一緒に値を渡すには
-
さくらインターネットでメール...
-
【PHP】tmp_nameの命名規約につ...
-
php4とphp5での数値の取り扱い...
-
テレメールとは?
-
PHPでメールを受信するには?
-
データ送信をボタンを押さずに...
-
PEAR(Image_QRCode)のエラー
-
Apache 2.4でphp-5.3を使いたい...
-
セッションについての設定なの...
-
require_once()でファイルが読...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループの中で mailItemObj.Disp...
-
SoftBankにメール送信できない
-
【エクセルVBA】メール送信前に...
-
basp21 Proでのメールの暗号化...
-
VBでメールを送る時のSMT...
-
コマンドプロンプトで添付ファ...
-
空メール送信~メールアドレス取得
-
BASP21を使って
-
存在しないメールアドレスかど...
-
SendMailがエラーを返さない
-
HPの更新をしたら自動でメール...
-
VB.NETでフリーメールアドレス...
-
Bookを閉じて保存した時のみ実...
-
一定時間毎に同じ動作を繰り返...
-
phpでメールを送信
-
PHPで空メールの自動返信を作り...
-
$_SERVER{'HTTP_X_UP_SUBNO'}取...
-
javamailで220の応答が遅い
-
PHPでメール送信する際の送信数...
-
UWSCにつきまして
おすすめ情報