PHP联系人表单空白电子邮件


PHP Contact Form blank emails

看起来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";
        }
    }
?>

您必须检查请求方法是否为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);
}

您需要在标题行的末尾使用'r'n。但是,如果你只有一个标题,你根本不需要它。

您需要确保只有在有post请求时才执行代码。你可以通过将所有东西包装在中来做到这一点

if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
   ...
}

如果你想发送邮件,只有当有人点击提交按钮时,只需使用这个

if (isset($_POST['submit'])){
   send_mail();      //and define send mail somewhere else 
}

将其添加到您的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'])); 

如果你收到的是空白电子邮件,这意味着有人正在像www.yousite.com/contactsend.php 一样从浏览器运行action="contact.php"脚本

上面的代码将停止