简体   繁体   English

php形式的蜜罐技术

[英]Honeypot technique for php form

I'm trying use honeypot technique for my custom form on wordpress site. 我正在尝试将蜜罐技术用于wordpress网站上的自定义表单。 My form look like that. 我的表格看起来像那样。

<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>

Input with name robotest for validation on server side. 输入名称为robotest以便在服务器端进行验证。

This is mail.php code: 这是mail.php代码:

<?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/");

?>

When I add validation for robotest , this script doesn't work. 当我添加对robotest验证时,此脚本不起作用。

You are setting the $error variable but you are not using it anywhere. 您正在设置$error变量,但未在任何地方使用它。

If you change the: 如果您更改:

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

To a: 到:

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

You will have what you describe you want to have. 您将拥有自己想要拥有的描述。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM