Форма электронной почты PHP отправляет случайный текст - PullRequest
1 голос
/ 31 декабря 2010

Я сделал веб-страницу для клиента, которая включала в себя ряд текстовых полей, запрашивающих конкретную информацию, такую ​​как имя человека, адрес электронной почты, компания и т. Д. Наряду с кнопкой, которая будет отправлять информацию по электронной почте моему клиенту,Всякий раз, когда я тестировал кнопку, она работала идеально, я загружал страницу и думал, что все готово.Но на днях мой клиент получил это письмо с сайта:

Имя: rfhopzdgmx rfhopzdgmx
Электронная почта: envlxw@lnlnsm.com
Компания: zUDXatAfoDvQrdH

Почтовый адрес:
AaSsXklqpHIsoCNcei
gXsimMPRBYZqq
vGLvZraZNdpOAV, ChsmuibE PoKzaSCubXPRI

1012 * Домашний телефон: CIJbIfjMfjIaTqAlD
Рабочий телефон: JFLZBOvru
сотовый телефон: XlFJTTFGiTTiiFQfy
Факс: UEJMOVZodWPkKxew

Комментарии: sPvSCE hgetwoguderu, *
[url = http://atyktjlxcznl.com/]atyktjlxcznl[/url],
[link = http://nudvfcehwpyg.com/]nudvfcehwpyg[/link], http://lvvwkbzbhnzp.com/

Примечание: * строка содержит HTML-код ссылки, я просто не знаю, какчтобы этот сайт показывал его.

Вот код PHP на сайте для кнопки электронной почты.

<?php
//This Sends A Formatted Text Email Using The Text Boxes
if ($_POST['submit']){
    //This Gets The Form Data
    $fname = $_POST['fName'];
    $lname = $_POST['lName'];
    $email = $_POST['email'];
    $company = $_POST['co'];
    $address1 = $_POST['address1'];
    $address2 = $_POST['address2'];
    $city = $_POST['city'];
    $state = $_POST['state'];
    $zip = $_POST['zip'];
    $homep = $_POST['homeP'];
    $workp = $_POST['workP'];
    $cellp = $_POST['cellP'];
    $fax = $_POST['fax'];
    $comments = $_POST['txaOutputField'];

    //echo "<script language = 'javascript'>alert('YAY');</script>";

    if ($fname && $lname && $email && $comments){ //Check If Required Fields Are Filled
        //This Sets The SMTP Configuration In php.ini
        ini_set("SMTP", "smtp.2ndsourcewire.com");

        //This Replaces Any Blank Fields With 'None's
        if ($company == ""){
            $company = "None";
        }
        if ($address1 == ""){
            $address1 = "None";
        }
        if ($city == ""){
            $city = "None";
        }
        if ($state == ""){
            $state = "None";
        }
        if ($zip == ""){
            $zip = "None";
        }
        if ($homep == ""){
            $homep = "None";
        }
        if ($workp == ""){
            $workp = "None";
        }
        if ($cellp == ""){
            $cellp = "None";
        }
        if ($fax == ""){
            $fax = "None";
        }

        //This Creates The Variables Necessary For The Email
        $to = "CLIENT EMAIL WHICH I'M CENSORING";
        $subject = "Email from 2ndSourceWire.com";
        $from = "From: noreply@2ndsourcewire.com";
        $secondEmail = "MY EMAIL WHICH I'M ALSO CENSORING";

        if ($address2 == ""){
            $body = "Name: $fname $lname\n".
                    "Email: $email\n".
                    "Company: $company\n\n".
                    "Mailing Address:\n".
                    "$address1\n".
                    "$city, $state $zip\n\n".
                    "Home Phone: $homep\n".
                    "Work Phone: $workp\n".
                    "Cell Phone: $cellp\n".
                    "Fax: $fax\n\n".
                    "Comments:\n".
                    "$comments";
        }
        else {
            $body = "Name: $fname $lname\n".
                    "Email: $email\n".
                    "Company: $company\n\n".
                    "Mailing Address:\n".
                    "$address1\n".
                    "$address2\n".
                    "$city, $state $zip\n\n".
                    "Home Phone: $homep\n".
                    "Work Phone: $workp\n".
                    "Cell Phone: $cellp\n".
                    "Fax: $fax\n\n".
                    "Comments:\n".
                    "$comments";
        }

        //This Sends The Email
        mail($to, $subject, $body, $from);
        mail($secondEmail, $subject, $body, $from);

        echo "<script language = 'javascript'>alert('The email was sent successfully.');</script>";
    }
    else {
        //The Required Fields Are Not Filled
        echo "<script language = 'javascript'>alert('Please fill your first name, last name, email address, and your comment or question.');</script>";
    }
}

?>

ЯНемного удивившись, как это произошло, клиент упомянул пару писем об этом, так что я не думаю, что это случайный сбой.Кроме того, адрес электронной почты был отформатирован как адрес электронной почты, поэтому кто-то или какая-либо программа интерпретировали метки рядом с каждым текстовым полем.Я также заметил, что введенные имя и фамилия - это одно и то же слово, хотя они и были в разных текстовых полях, я думаю, что это какая-то спам-программа, но они не будут пытаться рекламировать что-то и зарабатывать деньги, а не просто издаватьслучайный текст?Кроме того, секция комментариев не имеет никакого смысла для меня вообще, ссылки никуда не ведут, и все они отлично отформатированы, случайный человек, просто бродящий вокруг, не будет знать эти теги, и программист, делающий это, не будет беспокоиться об этом,но также и не программа.

Я понятия не имею, что вызвало это или как это исправить, я рисую здесь пробел.У кого-нибудь есть идеи?

Ответы [ 4 ]

9 голосов
/ 31 декабря 2010

Спаммер / бот вводил данные на вашу страницу, и вы покорно отправили их в свое приложение.

Почему вы думаете, что это загадка?

1 голос
/ 31 декабря 2010

даже простой вопрос типа "ты человек Y / N?" или "2 + 2?" остановит бота, также используя некоторые js, чтобы установить скрытое значение при отправке и проверить это на сервере. было бы неплохо иметь подтверждение на $ email и $ phone.

1 голос
/ 31 декабря 2010

добавьте капчу, чтобы остановить это. Если вы не знаете, что написать, вы можете использовать reCAPTCHA

0 голосов
/ 31 декабря 2010

Вместо того, чтобы люди пытались читать CAPTCHA, мне нравится иметь четыре текстовых поля подряд и просить пользователя отметить два случайных (например, «Пожалуйста, отметьте первый и третий поля») и убедиться, что это единственныедва проверенных в валидации.

...