2016-11-06 18 views
0

私は、ワードプレスサイトのカスタムフォームにハニーポット技術を使ってみました。 私のフォームはそのように見えます。ハニーポット技術(PHPフォーム用)

<form id="form-1" 
    action="<?php echo get_template_directory_uri(); ?>/mail.php" method="post" class="order__form form"> 
    <p class="form__title">Order and Receive 30% off</p> 
    <p class="form__text">fill out this form so you can get sale</p> 
    <input type="text" name="name" class="form__item" placeholder="Your name"> 
    <input type="email" name="email" required class="form__item" placeholder="Email address"> 
    <p class="robotic" id="pot"> 
     <label>If you're human leave this blank:</label> 
     <input name="robotest" type="text" id="robotest" class="robotest" /> 
    </p> 
    <input type="submit" value="Send" class="button form__button"> 
</form> 

サーバー側の検証用に名前robotestを入力します。

<?php 
    $mess = ''; 
    $mess .= '<hr>'; 
    if($_POST['robotest'] != ''){ 
     $error = "You are a gutless robot."; 
    } else { 
     if(isset($_POST['name'])) { 
      $name = substr(htmlspecialchars(trim($_POST['name'])), 0, 100); 
      $mess .= '<b>Имя отправителя: </b>' . $name . '<br>'; 
     } 
     if(isset($_POST['email'])) { 
      if($_POST['email']!=''){ 
       $email = substr(htmlspecialchars(trim($_POST['email'])), 0, 100); 
       $mess .= '<b>E-mail: </b>' . $email . '<br>'; 
      } 
     } 
    } 

    $mess .= '<b>Заявка пришла со страницы:</b> ' . $_SERVER["HTTP_REFERER"] .'<br>'; 
    $mess .= '<hr>'; 

    require 'class.phpmailer.php'; 

    $mail = new PHPMailer(); 
    $mail->AddAddress('xxx2xxx.com',''); 
    $mail->IsHTML(true); 
    $mail->CharSet = "UTF-8"; 
    $mail->Subject = "new"; 
    $mail->From = "new"; 
    $mail->FromName = "new"; 
    $mail->Body = $mess; 

    if ($mail->Send()) { 
     header('Location: ../'); 
    } else { 
     die ('Mailer Error: ' . $mail->ErrorInfo); 
    } 

    header("Location: /thanks/"); 

?> 

私はrobotestの検証を追加すると、このスクリプトは動作しません。

これはmail.phpコードです。

+1

'このスクリプトは機能しません。 '空白ページ?いいえの手紙? PCが爆発? –

+0

動作していますが、検証していません。ボットがロボットのフィールドスクリプトを満たしているときは、表示エラーでなければならないという主な考え方。しかし、今は毎回送信され、私は電子メールを受信します。 –

+0

ロジックに欠陥があるためです。そして、あなたが正しくコードをインデントすると、それが表示されます。 –

答えて

0

$error変数を設定していますが、どこでも使用していません。

を変更した場合:へ

$error = "You are a gutless robot."; 

を:

die("You are a gutless robot."); 

あなたは、あなたが持っているしたい記述するものがあります。