【问题标题】:Add extra INPUT to contact form email PHP添加额外的 INPUT 到联系表单电子邮件 PHP
【发布时间】:2015-04-06 01:19:01
【问题描述】:

我正在使用我发现的一些 php 从我的网站发送联系表格。

HTML 如下所示:

<div id="wrap">
    <div id='form_wrap'>
        <form id="contact-form" action="javascript:alert('success!');">

    <p id="formstatus"></p>
            <input type="text" name="name" value="" id="name" placeholder="Voornaam" required/>
            <input type="text" name="email" value="" id="email" placeholder="E-mail adres" required/>
            <textarea  name="message" value="Your Message" id="message" placeholder="Uw vraag of projectomschrijving" required></textarea>
            <input type="submit" name ="submit" value="Offerte aanvragen" />

        </form>
    </div>
</div>

PHP 看起来像这样:

<?php

define("WEBMASTER_EMAIL", 'your@emailadress.com');

error_reporting (E_ALL ^ E_NOTICE);

function ValidateEmail($email)
{
    $regex = '/([a-z0-9_.-]+)'. # name
    '@'. # at
    '([a-z0-9.-]+){2,255}'. # domain & possibly subdomains
    '.'. # period
    '([a-z]+){2,10}/i'; # domain extension 

    if($email == '') 
        return false;
    else
        $eregi = preg_replace($regex, '', $email);
    return empty($eregi) ? true : false;
}

$post = (!empty($_POST)) ? true : false;

if($post)
{
    $name    = stripslashes($_POST['name']);
    $email   = trim($_POST['email']);
    $subject = stripslashes($_POST['subject']);
    $message = stripslashes($_POST['message']);

    $error = '';

    // Check name
    if(!$name || $name == "Name*")
        $error .= 'Please enter your name.<br />';

    // Check email
    if(!$email || $email == "Email*")
        $error .= 'Please enter an e-mail address.<br />';

    if($email && !ValidateEmail($email))
        $error .= 'Please enter a valid e-mail address.<br />';

    // Check message
    if(!$message)
        $error .= "Please enter your message. <br />";

    if(!$error)
    {
        $mail = mail(WEBMASTER_EMAIL, $subject, $message,
             "From: ".$name." <".$email.">\r\n"
            ."Reply-To: ".$email."\r\n"
            ."X-Mailer: PHP/" . phpversion());

        if($mail)
            echo 'OK';
    }
    else
        echo '<div class="formstatuserror">'.$error.'</div>';
}?>

效果很好!但我需要在我的表单中添加更多输入。我知道如何将它们添加到 html 中。例如我添加了这个:

<input type="text" name="lastname" value="" id="lastname" placeholder="Achternaam" required/>

但我只是找不到将此输入添加到我邮箱中收到的电子邮件的好方法...我在 PHP 中的何处添加此输入?我尝试了很多东西...

希望大家能帮帮我!

大卫

【问题讨论】:

  • 您需要将所有额外的参数放在 $subject 或 $message 中。这取决于您发送的内容类型。也就是说,新输入适合消息或主题正文

标签: php html css email


【解决方案1】:

在这几行之后:

    $name    = stripslashes($_POST['name']);
    $email   = trim($_POST['email']);
    $subject = stripslashes($_POST['subject']);
    $message = stripslashes($_POST['message']);

您实例化一个包含字段值的变量(姓氏):

    $lastname = stripslashes($_POST['lastname']);

然后验证输入是否为空或其他内容:

 // Check message
    if(!$lastname )
        $error .= "Please enter your lastname. <br />";

最后,您使用变量 lastname 将其显示在电子邮件消息中:

"From: ".$name." ".$lasname." <".$email.">\r\n"

等等!

编辑:如果你想在消息上使用这个输入,你有 $message 变量,你可以这样做:

if(!$error)
    {    
         $message .= "<p>Message sent by $lastname";
...

【讨论】:

  • 是的,这行得通!以及如何编辑 php 以使输入出现在电子邮件正文中?
【解决方案2】:

如果您不希望它作为“发件人”或“主题”的补充出现在电子邮件标题中,您还可以继续将信息附加到电子邮件正文或 $message 中。例如:

$name    = stripslashes($_POST['name']);
$email   = trim($_POST['email']);
$subject = stripslashes($_POST['subject']);
$message = "Last Name: " . stripslashes($_POST['lastname']) . "\r\n";
$message .= "Message: " . stripslashes($_POST['message']);

其他选项也可以,它实际上只是取决于您希望这些额外信息在电子邮件中的“位置”。

【讨论】:

    猜你喜欢
    • 2014-06-09
    • 2019-09-04
    • 1970-01-01
    • 2013-08-16
    • 2015-09-28
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2012-07-10
    相关资源
    最近更新 更多