【问题标题】:PHPMailer Form HelpPHPMailer 表单帮助
【发布时间】:2011-02-24 14:47:44
【问题描述】:

有没有更好的方法来阻止垃圾邮件通过我的 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';
            }
        }


    ?>

【问题讨论】:

  • 就像一个注释, if (isset($_POST) && count($_POST)>0) { 可以通过页面上的一个按钮将数据发送给您自己最好检查每个字段.您可以使用正则表达式来确保使用有效的电子邮件

标签: php forms formatting spam-prevention phpmailer


【解决方案1】:

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

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

HTML &lt;input type="text" class="antiBot" name="antibot" value="" /&gt;

PHP

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

如何更改名称或机器人将能够注意到它是一个陷阱,并且只需为您的网站解析 CSS 文件的少量工作就可以绕过它

所以在你的情况下,如果它的纯文本使用双引号和 \n (换行符)但它不会在单引号中工作,那么你只需在你的代码周围加上上面的 if 来格式化电子邮件。

【讨论】:

  • 谢谢@Barkermn01,我会试试的。您是否知道在表单处理时将 ​​sendform 显示为 HTML,以便我可以设置字体类型?还是更复杂?
  • 这很复杂,但是有一些类可以让您同时执行 HTML 和文本回退 phpclasses.org/package/…
  • 非常感谢!我从来没有听说过 phpclasses 看起来是个好资源。
  • 我有一些代码在那里我自己的谷歌“轻量级 MVC”和我的 phpClasses 是顶部链接
猜你喜欢
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多