简体   繁体   English

PHP联系表格空白电子邮件

[英]PHP Contact Form blank emails

Looks like send.php is being accessed and sending blank emails. 看起来send.php正在被访问并发送空白电子邮件。 Need to make it so send.php doesn't send email, unless the submit button is used on a form. 需要做到的是send.php不会发送电子邮件,除非在表单上使用了Submit按钮。 I was told 'isset $_post' would help me, just not clear on how to execute it. 有人告诉我'isset $ _post'对我有帮助,只是不清楚如何执行它。

Here's send.php code: 这是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";
        }

    }

?>

add this to your php script: 添加到您的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>");
}

add it just after: 在以下位置添加:

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

if you are getting blank emails it means someone is running the action="contact.php" script from the browser like www.yousite.com/contactsend.php 如果您收到空白电子邮件,则表示有人正在从浏览器(如www.yousite.com/contactsend.php )运行action="contact.php"脚本

this code above will stop it 上面的代码将停止它

You need to use \\r\\n at the end of header lines. 您需要在标题行的末尾使用\\r\\n But if you only have one header you don't need it at all. 但是,如果只有一个标头,则根本不需要它。

You need to make sure the code is only executed when there is a post request. 您需要确保仅在有发布请求时才执行代码。 You can do that by wrapping everything in: 您可以通过将所有内容包装在其中来实现:

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

If you want to send mail, only when someone hits submit button, simply use this 如果您要发送邮件,仅当有人点击“提交”按钮时,才使用此功能

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

You have to check wether the request method was POST. 您必须检查请求方法是否为POST。 If so, you should send the email: 如果是这样,您应该发送电子邮件:

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

    }

?>

This makes it all happen: 这使得这一切发生:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM