0

POSTを使用したphp連絡フォームがあり、フォームに参照ページ、つまり連絡フォームにリンクしているWebサイトを自動的に含めたいと思います。これは通常、私のWebサイト内にあります。

例えば、

www.website.com/nothere.phpは404.phpを返します(アドレスとしてwww.website.com/nothere.phpを使用)

404ページに、お問い合わせフォームであるfeedback.phpへのリンクがあります。

送信されたフォームに参照URL(この場合は「www.website.com/nothere.php」)を含めたいです。

私はこのコードを使用できることを理解しています:

$ref = getenv("HTTP_REFERER");

それで、私はそれをページの上部にあるphpに追加しました(ここにスニペットがあります):

$SendTo = "web@website.com";
$Subject = "Website Feedback";
$FromString = "From: ".$_POST['eaddress']."\r\n";
$ref = getenv("HTTP_REFERER");

しかし、紹介が電子メールに印刷されるように、どのようにindholdをコーディングしますか?

$Indhold .= "Referring page: ".$_POST['$????']."\n";

上記の行に追加する必要があるものを誰かが手伝ってもらえますか?それとも、これを別の方法で行う必要がありますか?

どうもありがとう!アンディ

4

3 に答える 3

2

リファラーを含む非表示の入力フィールドを連絡先フォームに配置します。

<form ...>
...
<input type="hidden" value="<?php echo $_SERVER['HTTP_REFERER'] ?>" name="referer" />
...
</form>

その後$_POST['referer']、メールを送信するときにアクセスできます。

于 2012-12-13T09:39:46.543 に答える
1

何かをする前に、それが$_SERVER['HTTP_REFERER']クライアントによって設定されていることを知っておく必要があります。これは、何でも含めることができることを意味します。リファラーを本当に知る必要がある場合は、少なくともそれがURLであり、Webサイトだけを指しているのではないことを確認してください。

例えば:

$ref = filter_input(INPUT_SERVER, 'HTTP_REFERER', FILTER_SANITIZE_URL);
if ( ! preg_match('/^http:\/\/website.com/', $ref)) {
    $ref = '(Unknown URL...)';
}

最初にチェックせずに使用した場合、HTTP_REFERER悪意のあるユーザーがマシンにウイルスをインストールするURLに設定する可能性があります。つまり、チェックしない限り使用しないでください。

于 2012-12-13T09:53:45.437 に答える
1

まあ..これには実際に $_SERVER['HTTP_REFERER'] を使用できます。含めるには、次のように記述します。

<input type="hidden" name="referer" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />

お問い合わせフォームで。

そして、メッセージを作成するときは、次のようにします。

$Indhold .= 'Referring page: '.$_POST['referer']."\n";
于 2012-12-13T09:41:33.760 に答える