Справка по форме PHPMailer - PullRequest
       11

Справка по форме PHPMailer

0 голосов
/ 24 февраля 2011

Есть ли какой-нибудь лучший способ остановить проникновение спама в мой скрипт 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 Ответ

3 голосов
/ 24 февраля 2011

Один из них, который я использую, - это иметь текстовую область и использовать ваш файл .css для отображения: ни один из них больше всего не загружает ботов.не тогда отправляй свой емейл.

EG 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 (новая строка), но оно не будет работать в одинарных кавычках.

...