コメントに記載されているとおり、空欄がないかどうかを確認します。
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レコードを作成する必要がありますが、それはこの質問の範囲を超えています。
、ここにコードを置くチェックボックスを空でない(あなたはこれを行う必要があります知っているように見える)、これは実際にあなたが考えることよりも簡単であるCAPCHA – nogad
を追加します。空の値をチェックし、フルヘッダーを使用する –
スレッドにHTMLコードを追加しました。私はPHPにはかなり新しいので、空の値をチェックしてフルヘッダーなどを使う方法がわかりません。 – TrifleTower