You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为表单提交的邮件添加提交日期时间及数据同意声明

解决方案:添加提交时间与数据同意声明到邮件内容

要实现你的需求,我们需要分三步调整代码:完善前端表单字段、后端PHP处理时间与同意信息、可选的前端错误提示优化,具体操作如下:


1. 确保前端表单传递数据同意状态

首先给你的复选框补充name属性,这样表单序列化时才能把勾选状态传给PHP。假设你的HTML复选框代码如下,添加name="consent":

<input type="checkbox" id="verif" name="consent">
<label for="verif">Acceptance of use of data</label>

你的JS已经做了勾选判断,添加name属性后,这个字段就能被serialize()提交到后端了。


2. 修改PHP代码,添加时间与同意信息到邮件

我们需要在PHP中完成三件事:接收同意状态、生成格式化的提交时间、将这两个信息追加到邮件内容里。修改后的contact.php代码如下,我标注了新增内容:

<?php 
$array = array(
    "firstname" => "", 
    "name" => "", 
    "email" => "", 
    "phone" => "", 
    "message" => "", 
    "consent" => "", // 新增:存储同意状态
    "firstnameError" => "", 
    "nameError" => "", 
    "emailError" => "", 
    "phoneError" => "", 
    "messageError" => "", 
    "consentError" => "", // 新增:同意项错误提示
    "isSuccess" => false
);
$emailTo = "myemail@gmail.com";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $array["firstname"] = test_input($_POST["firstname"]);
    $array["name"] = test_input($_POST["name"]);
    $array["email"] = test_input($_POST["email"]);
    $array["phone"] = test_input($_POST["phone"]);
    $array["message"] = test_input($_POST["message"]);
    // 新增:获取同意状态,转换成目标文本
    $array["consent"] = isset($_POST["consent"]) ? "Acceptance of use of data" : "No consent given";
    $array["isSuccess"] = true;
    $emailText = "";

    // 原有字段验证逻辑保持不变
    if (empty($array["firstname"])) {
        $array["firstnameError"] = "Il manque votre prénom";
        $array["isSuccess"] = false;
    } else {
        $emailText .= "Firstname: {$array['firstname']}, ";
    }
    if (empty($array["name"])) {
        $array["nameError"] = "Il manque votre nom";
        $array["isSuccess"] = false;
    } else {
        $emailText .= "Name: {$array['name']}, ";
    }
    if(!isEmail($array["email"])) {
        $array["emailError"] = "Ceci n'est pas un email";
        $array["isSuccess"] = false;
    } else {
        $emailText .= "Email: {$array['email']}, ";
    }
    if (!isPhone($array["phone"])) {
        $array["phoneError"] = "Que des chiffres et des espaces, svp...";
        $array["isSuccess"] = false;
    } else {
        $emailText .= "Phone: {$array['phone']}, ";
    }
    if (empty($array["message"])) {
        $array["messageError"] = "Quel est votre message?";
        $array["isSuccess"] = false;
    } else {
        $emailText .= "Message: {$array['message']}, ";
    }

    // 新增:后端双重验证同意项,提升安全性
    if (!isset($_POST["consent"])) {
        $array["consentError"] = "Merci d'accepter les conditions";
        $array["isSuccess"] = false;
    }

    // 新增:生成格式化的日期和时间,追加到邮件内容
    $submitDate = date("d/m/Y"); // 格式:日/月/年,可按需修改为m/d/Y
    $submitTime = date("H:i"); // 格式:24小时制小时:分钟,可改为h:i A用12小时制
    $emailText .= "date: {$submitDate}, time: {$submitTime}, Consent: {$array['consent']}";

    if($array["isSuccess"]) {
        $headers = "From: {$array['firstname']} {$array['name']} <{$array['email']}>
Reply-To: {$array['email']}";
        mail($emailTo, "Un message de votre site", $emailText, $headers);
    }
    echo json_encode($array);
}

// 原有函数保持不变
function isEmail($email) {
    return filter_var($email, FILTER_VALIDATE_EMAIL);
}
function isPhone($phone) {
    return preg_match("/^[0-9 ]*$/",$phone);
}
function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
?>

修改说明:

  • 我把邮件内容的分隔符换成了逗号+空格,和你期望的格式完全匹配;如果想要换行显示,改回\n即可。
  • 时间格式可按需调整,比如date("m/d/Y")是月/日/年,date("h:i A")是12小时制带AM/PM标识。
  • 后端新增了同意项验证,即使前端判断被绕过,后端也会拒绝提交,避免无效邮件。

3. (可选)前端错误提示优化

如果需要在前端显示同意项的错误提示,可以修改JS代码的success回调,添加同意项的错误渲染:

success: function(result) {
    if(result.isSuccess) {
        $("#contact-form").append("<p class='thank-you'> Votre message a bien été envoyé. Merci de m'avoir contacté </p>")
        $("#contact-form")[0].reset();
    } else {
        $("#firstname + .comments").html(result.firstnameError);
        $("#name + .comments").html(result.nameError);
        $("#email + .comments").html(result.emailError);
        $("#phone + .comments").html(result.phoneError);
        $("#message + .comments").html(result.messageError);
        // 新增:渲染同意项错误提示
        $("#verif + .comments").html(result.consentError);
    }
}

同时在HTML复选框后添加错误提示容器:

<input type="checkbox" id="verif" name="consent">
<label for="verif">Acceptance of use of data</label>
<span class="comments"></span>

完成以上修改后,你收到的邮件就会包含提交日期、时间和数据同意声明啦!

内容的提问来源于stack exchange,提问作者Olivia A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:04:50