2017-02-26 3 views
1

最近私のウェブサイトに私の連絡フォームが修正されましたが、問題があります。連絡フォームのボックスに何も入れることなく、私に電子メールを送ることができます。PHPに関する問題連絡フォーム迷惑メール

本当に迷惑なものを入力しなくても、かなり多くの人が送信ボタンを押すことができます。

とにかくこれを修正しますか? https://hastebin.com/hisayacuji.xml

ありがとう:https://hastebin.com/ukowawovab.pl

ここに私のHTMLコードは次のとおりです。

は、ここに私のPHPコードです! TrifleTower

+0

、ここにコードを置くチェックボックスを空でない(あなたはこれを行う必要があります知っているように見える)、これは実際にあなたが考えることよりも簡単であるCAPCHA – nogad

+1

を追加します。空の値をチェックし、フルヘッダーを使用する –

+0

スレッドにHTMLコードを追加しました。私はPHPにはかなり新しいので、空の値をチェックしてフルヘッダーなどを使う方法がわかりません。 – TrifleTower

答えて

1

コメントに記載されているとおり、空欄がないかどうかを確認します。

requiredが追加されていても、ボットはphpファイルに直接アクセスしている可能性があります。

<?php 

if(!empty($_REQUEST['name']) 

&& !empty($_REQUEST['email']) 

&& !empty($_REQUEST['skype']) 

&& !empty($_REQUEST['message'])){ 

$to = "[email protected]"; 
$subject = "FluxDesigns Contact Form"; 
$name = $_REQUEST['name']; 
$email = $_REQUEST['email']; 
$skype = $_REQUEST['skype']; 
$message = $_REQUEST['message']; 
$ip = $_SERVER['REMOTE_ADDR']; 
$body = " Name: $name \n Email: $email \n Skype: $skype \n Message: $message \n\n IP Address: $ip"; 
if (mail($to, $subject, $body)) { 
    header('Location: /thanks'); 
    exit; // added that to prevent further execution 
    } 

} 
else{ 
    echo "Fill in all fields"; 

    } 

あなたはさらに、チェックボックスを追加し、それがisset()に設定されているかどうかを確認し、それに応じて、それを扱うことができます。

ただし、mail()マニュアルに記載されているフルヘッダーを使用する必要があります。そうでなければ、あなたはそれを受け取っていないかもしれないし、スパムとして扱うこともできます。

完全なヘッダーの有効なFrom電子メールアドレスを有することを意味します。マニュアルから

例:

<?php 
$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 

また、SPFレコードを作成する必要がありますが、それはこの質問の範囲を超えています。

関連する問題