PHPMailer表单帮助

时间:2011-02-24 14:47:44

标签: php forms formatting spam-prevention phpmailer

有没有更好的方法来阻止我的phpmailer脚本上的垃圾邮件?

另外,我将如何向此添加格式,以便在将其发送到电子邮件时更具可读性,例如断线

我希望我的php语法是正确的 - 因为我不懂PHP。

<?php
        # bool has_injection (String $var, [String $var, ...])
        function has_injection () {
            $values = func_get_args();
            for ($i=0, $count=func_num_args(); $i<$count; $i++) {
                if ( stristr($values[$i], "%0A") || stristr($values[$i], "%0D") || stristr($values[$i], "\\r") || stristr($values[$i], "\\n") 
                    || stristr($values[$i], "Bcc") || stristr($values[$i], "Content-Type") ) {
                    return true;
                }
            }
            return false;
        }

        $error = '';
        if (isset($_POST) && count($_POST)>0) {
            # The form has been submitted
                $course_title = $_POST['course_title'];
                $course_date = $_POST['course_date'];
                $course_code = $_POST['course_code'];
                $course_fee = $_POST['course_fee'];
                $break .= "\n";
                $qual_subject_level = $_POST['qual_subject_level'];
                $break .= "\n";
                $email = $_POST['email'];

            if ($name && $email && $subject) {
                if (has_injection($name, $email, $subject)) {
                    # You've got another spammer at work here
                    $error = 'No spamming';
                    exit(0);
                }
                else {
                    # It's safe to send the message
                    mail('my@gmail.com', 
                    $subject,
                    $course_title, 
                    $course_code, 
                    $course_fee,
                    $break,
                    $qual_subject_level,
                    $break,
                    $subject,
                    "From: $name <$email>");
                }
            }
            else {
                $error = 'Please fill in all the forms';
            }
        }


    ?>

1 个答案:

答案 0 :(得分:3)

我使用的是一个文本区域,并使用你的.css文件显示:没有它大多数机器人不读取css因此认为文本框显示,如果它有内容,它是一个机器人,如果它不要发送你的电子邮件。

E.G CSS .antiBot{display:none};

HTML <input type="text" class="antiBot" name="antibot" value="" />

PHP

<?php
if($_REQUEST['antibot'] == ""){
  // send your email
}else{
  // bot using your system
}
?>

如何更改名称或机器人将能够注意到它的陷阱,并且只需要解决必须为您的网站解析CSS文件的小工作就可以解决这个问题

所以在你的情况下,如果它的纯文本使用双引号和\ n(换行符),只是说明你的代码周围的if和格式化电子邮件,但它不能用单引号工作。