Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPMailer表单帮助_Php_Forms_Formatting_Spam Prevention_Phpmailer - Fatal编程技术网

PHPMailer表单帮助

PHPMailer表单帮助,php,forms,formatting,spam-prevention,phpmailer,Php,Forms,Formatting,Spam Prevention,Phpmailer,有没有更好的方法来阻止垃圾邮件通过我的phpmailer脚本 另外,我将如何为其添加格式,以便在发送到电子邮件(如换行)时更具可读性 我希望我的php语法是正确的-因为我不理解php <?php # bool has_injection (String $var, [String $var, ...]) function has_injection () { $values = func_get_args();

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


    ?>

我使用的一个方法是有一个文本区域并使用你的.css文件来显示:none it大多数机器人不阅读css,因此认为文本框显示了,如果文本框中有内容,那么它就是一个机器人,如果它不发送你的电子邮件

例如CSS
.antiBot{display:none}

HTML

PHP


无论何时更改名称或bot,您都可以注意到它是一个陷阱,并且只需做很少的工作就可以绕过它,而不必解析站点的CSS文件


因此,在您的情况下,如果电子邮件的纯文本使用双引号和\n(换行符),则只需在代码周围加上上面的if就可以格式化电子邮件但是它不能用单引号引用。

我使用的一个方法是有一个文本区域,并使用你的.css文件来显示:无。大多数机器人不阅读css,因此认为文本框显示了,如果其中有内容,那么它就是一个机器人,如果它不发送你的电子邮件

例如CSS
.antiBot{display:none}

HTML

PHP


无论何时更改名称或bot,您都可以注意到它是一个陷阱,并且只需做很少的工作就可以绕过它,而不必解析站点的CSS文件


因此,在您的情况下,如果电子邮件的纯文本使用双引号和\n(换行符),但不能使用单引号,则只需在您的代码周围加上上面的if就可以了。

谢谢@Barkermn01,我会试试看。您知道在表单处理时如何将sendform显示为HTML,以便我可以设置字体类型吗?或者这更复杂?这相当复杂,但是有一些类可以让你同时做HTML和文本回退,非常感谢!我从来没有听说过phpclasses看起来像是一个很好的资源。我在那里有一些代码我自己的谷歌“轻量级MVC”,我的phpclasses是顶级链接谢谢@Barkermn01,我会试试的。您知道在表单处理时如何将sendform显示为HTML,以便我可以设置字体类型吗?或者这更复杂?这相当复杂,但是有一些类可以让你同时做HTML和文本回退,非常感谢!我从来没有听说过phpclasses看起来像是一个很好的资源。我在那里有一些代码我自己的谷歌“轻量级MVC”,我的phpclasses是顶级链接,如果(isset($\u POST)&&count($\u POST)>0){可以通过页面上的一个按钮将数据发送给您自己,最好检查每个字段。如果(isset($\u POST)&&count($\u POST)>0,您可以使用正则表达式确保使用有效的电子邮件作为备注{可以通过页面上的一个按钮将数据发送给您自己,最好检查每个字段。您可以使用正则表达式确保使用有效的电子邮件发送数据
<?php
if($_REQUEST['antibot'] == ""){
  // send your email
}else{
  // bot using your system
}
?>