Форма обратной связи PHP пустые письма - PullRequest
0 голосов
/ 15 января 2012

Похоже, что к send.php обращаются и отправляют пустые электронные письма. Необходимо сделать так, чтобы send.php не отправлял электронную почту, если только кнопка отправки не используется в форме. Мне сказали, что 'isset $ _post' поможет мне, но не совсем понятно, как его выполнить.

Вот код send.php:

    <?php

$recipient  =   'test@test.com';

$email      =   $_REQUEST['Email'];

$subject    =   'Contact Form Submission';

$content    =   "The following has been submitted on your website \n\n";

$redirect   =   'thankyoupage.html';

$user = $_REQUEST['Email'];
$usersubject = "Subject";
$userheaders = "From: test@test.com\n";
$usermessage = "Blah blah blah";
mail($to,$subject,$message,$headers);
mail($user,$usersubject,$usermessage,$userheaders);

foreach($_POST as $k=>$v)
    {
        $content .= "$k: $v\n\n";
    }

mail_it(stripslashes($content), $subject, $email, $recipient);

if (isset($_POST['redirect']))
    {
        header("Location:".$_POST['redirect']);
    }
        else
    {
        header("Location: $redirect");
    }

function mail_it($content, $subject, $email, $recipient)
    {

        $headers .= "From: ".$email."\n";
        $headers .= "Reply-To: ".$email."\n";

        if ($bcc) $headers .= "Bcc: ".$bcc."\n"; 

        $headers .= "X-Priority: 0\n";
        $headers .= "X-Mailer: bjm Formmail \n";
        $message = $content."\n\n";

        if( !mail($recipient, $subject, $message, $headers))
        {
            echo "Sorry - an error occured trying to send the mail";
        }

    }

?>

Ответы [ 5 ]

0 голосов
/ 10 марта 2013

добавьте это в ваш php-скрипт:

if ($Name == '')
{
    die("<p align='center'><font face='Arial' size='6' color='#FF0000'>Please use our<a href=''> contact form</a> to send a message to us</font></p>");
}

добавьте его сразу после:

$Name = Trim(stripslashes($_POST['Name'])); 
$Email = Trim(stripslashes($_POST['Email`enter code here`'])); 
$Tel = Trim(stripslashes($_POST['Tel'])); 
$Message = Trim(stripslashes($_POST['Message'])); 

, если вы получаете пустые письма, это означает, что кто-то запускает скрипт action="contact.php" избраузер вроде www.yousite.com/contactsend.php

этот код выше остановит его

0 голосов
/ 15 января 2012

Вы должны проверить, был ли метод запроса POST.Если это так, вы должны отправить электронное письмо:

<?php

$recipient  =   'test@test.com';

$email      =   $_REQUEST['Email'];

$subject    =   'Contact Form Submission';

$content    =   "The following has been submitted on your website \n\n";

$redirect   =   'thankyoupage.html';

$user = $_REQUEST['Email'];
$usersubject = "Subject";
$userheaders = "From: test@test.com\n";
$usermessage = "Blah blah blah";


foreach($_POST as $k=>$v)
    {
        $content .= "$k: $v\n\n";
    }

if($_SERVER["REQUEST_METHOD"] == "POST") {
     mail_it(stripslashes($content), $subject, $email, $recipient);
}

if (isset($_POST['redirect']))
    {
        header("Location:".$_POST['redirect']);
    }
        else
    {
        header("Location: $redirect");
    }

function mail_it($content, $subject, $email, $recipient)
    {

        $headers .= "From: ".$email."\n";
        $headers .= "Reply-To: ".$email."\n";

        if ($bcc) $headers .= "Bcc: ".$bcc."\n"; 

        $headers .= "X-Priority: 0\n";
        $headers .= "X-Mailer: bjm Formmail \n";
        $message = $content."\n\n";

        if( !mail($recipient, $subject, $message, $headers))
        {
            echo "Sorry - an error occured trying to send the mail";
        }

    }

?>

Это все делает:

if($_SERVER["REQUEST_METHOD"] == "POST") {
     mail_it(stripslashes($content), $subject, $email, $recipient);
}
0 голосов
/ 15 января 2012

Вы должны убедиться, что код выполняется только при наличии почтового запроса. Вы можете сделать это, завернув все в:

if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
   ...
}
0 голосов
/ 15 января 2012

Если вы хотите отправлять почту, только когда кто-то нажмет кнопку отправки, просто используйте

if (isset($_POST['submit'])){
   send_mail();      //and define send mail somewhere else 
}
0 голосов
/ 15 января 2012

Вам необходимо использовать \r\n в конце строки заголовка. Но если у вас только один заголовок, он вам вообще не нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...