コメントフォームのHoneyPot PHP
-
12-11-2019 - |
質問
jQuery Ajaxポップアップコメントフォームを作成していますが、PHPで「ハニーポット」を設定する方法に問題があります。
ハニーポット($ ROBOTEST)が機能していません。代わりに、スクリプトは "Eメールが正しくない"を返します。誰かが私のエラーを指摘することができますか?ありがとう
HTMLフォームは次のとおりです。
<form class="cmxform" id="commentForm" method="POST" action="">
<p>
<label for="cname">Name</label>
<input id="cname" name="name" size="25" class="required" minlength="2" />
</p>
<p>
<label for="cemail">E-Mail</label>
<input id="cemail" name="email" size="25" class="required email" />
</p>
<p>
<label for="curl">URL</label>
<input id="curl" name="url" size="25" class="url" value="" />
</p>
<p>
<label for="ccomment">Your comment</label>
<textarea id="ccomment" name="comment" cols="22" class="required"></textarea>
</p>
<p class="robotic" id="pot">
<label>Please leave this blank:</label>
<input name="robotest" type="text" id="robotest" class="robotest" />
</p>
<p>
<input class="submit" type="submit" value="Submit"/>
</p>
.
編集:
サポートのための@jamwafflesのおかげで。以下はハニーポットを実装する正しい方法です。(そしてKamaloとして述べたように、あなたは「Robotest」のIDを展示するために設定したいと思うでしょう:あなたのCSSにnone):
<?php
$robotest = $_POST['robotest'];
$email = $_POST['email'];
if((!filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == "")) {
print "E-mail is correct";
$to = 'asdfdsafasdfsda@gmail.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com';
mail($to, $subject, $message, $headers);
} else {
print "E-mail is not correct";
}
?>
. 解決
filter_var()
電子メールが有効なときに偽造されていない値を返す、false
ではありません。!
のfilter_var(
の前にif()
を削除します。
if((filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest = ""))
.
if()
が失敗したときにfilter_var()
内にコードを実行しているがを取得している理由です。
Eメールが正しくない
有効なEメール用。
他の何かを逃したことも、あなたが空の文字列と比較する代わりに
$robotest
に割り当てているという事実です。単数の割り当て演算子の代わりにDouble Equals比較演算子を使用する必要があります。if()
はこのようになります。.if((filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == ""))
他のヒント
代替回答の場合は、展示付きのHTMLに「ハニーポット」入力を設定します。なし
<input type="text" name="honeypot" id="honeypot" style="display:none;"/>
. 所属していません StackOverflow