2011-12-28 5 views
2

私はフォームを介して私の訪問者のIPアドレスを取得するために私の連絡フォームに以下の行のコードを持っています。代わりにデフォルト値が返されます。訪問者のIPを返すにはどうすればよいですか?私の潜在的な顧客は、私に連絡する形をしていますが、スパマーもそうしています。フォームメーラからIPアドレスを取得する方法

+0

どのサーバー環境を使用していますか?このフォームをクライアントに送信する場合は、要求しているIPを判別することもできます。 – Tigraine

+0

私はあなたがリクエストに応じてサーバーからIPを取得する必要があると思う。 「クライアント」がある場合は、フォームにアクセスするためにログインするようにしてください。「スパム発信者」はできないと思います。または、reCaptchaなどを使用してください。正しく行われていれば、何よりも優れています。 –

+1

PHP $ _SERVER変数 'REMOTE_ADDR'と 'REMOTE_HOST'を参照しようとしているようです。 http://php.net/manual/en/reserved.variables.server.php – msanford

答えて

1

正確にこれを行うと思われますか?

IPアドレスが必要な場合は、フォームが生成するHTTP要求のクライアントアドレスを確認します。フォームがダイナミックにクライアント上にメールを作成している場合(つまり、HTTPリクエストでフォームデータを返信しない)、値を入力する場合は、HTMLを生成するコードから値を設定する必要がありますIPアドレスについては知らない) PHPで....

<input type=hidden name="env_report" value="<?php print $_SERVER['REMOTE_ADDR']; ?>"> 

のみ、それはあなたにもいくつかの改ざん検出....

<input type=hidden name="anti_tamper" value="<?php 
    print md5('s3cr3t' . $_SERVER['REMOTE_ADDR']); 
?>"> 

が含まれていない限り、電子メールの内容を修正するために誰かのために些細だ...、領収書の上で検証します。

+1

しかし、まだ...それは何を達成するつもりですか?フォームが送られたのと同じクライアントからリクエストが送られたとしますか?私はOPがスパマーから来ていると見られるIPを除外したいと思っていますが、間違っていると思います。おそらく、スパム送信者はフォーム要求とフォーム送信の間でIPを反転させるでしょう。これは実際に何かを行います。 –

+0

それは完全に機能しますが、改ざんされたかどうかはどのようにわかりますか? –

+0

if(md5( 's3cr3t'。$ ip_address_in_email)!= $ anti_tamper){// IPアドレスが改ざんされました} – symcbean

0

HTMLから直接取得することはできません。 PHPのようなサーバーサイド言語を使用して取得する最善の方法。 PHPでは、$ _SERVER ['REMOTE_ADDR']を使用して、クライアントのIPアドレスを取得できます。ここに私が少し前に書いたブログ投稿がGetting real client IP address in PHPです。

JavaScriptを使用してIPアドレスを取得する信頼できる方法はありませんが、詳細についてはthis questionをご覧ください。

フォームがサーバーに送信されたときにIPアドレスを確認し、送信されたものがスパマーか通常のユーザーかどうかを確認します。

関連する問題