質問

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;"/>
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top