doufenyu7610 2019-03-30 06:54
浏览 86
已采纳

多个复选框值不发送到PHP中的电子邮件

I'm fairly new to coding in PHP. Currently I am having a problem with my check boxes when i submit the form every fields works fine but i am not receiving multiple checkbox value. Just receiving "ARRAY" text in email.please check my code below ......................................................

<div class="col-sm-12">
    <div class="form-group text-center pl-3">
        <div class="custom-control custom-checkbox custom-control-inline">
            <input type="checkbox" class="custom-control-input" name="healthcover[]" value="Life Insurance" id="LifeInsurance">
            <label class="custom-control-label mr-3" for="LifeInsurance" data-toggle="tooltip" data-placement="top" data-original-title="Life insurance is a type of insurance contract which pays out a lump sum to your dependants should you pass away during the term of the contract. The cost of a policy is determined by a number of factors including your age, health and lifestyle.">Life Insurance</label>
        </div>
        <div class="custom-control custom-checkbox custom-control-inline">
            <input type="checkbox" class="custom-control-input" name="healthcover[]" value="Critical Illness Cover" id="CriticalIllnessCover">
            <label class="custom-control-label mr-3" for="CriticalIllnessCover" data-toggle="tooltip" data-placement="top" data-original-title="Critical illness cover is a type of life insurance policy that offers protection in the event of a serious illness or injury. If a policyholder suffers from a specific illness or injury, a payout is made by an insurance provider in the form of a lump-sum, which can be tax-free">Critical Illness Cover</label>
        </div>
        <div class="custom-control custom-checkbox custom-control-inline">
            <input type="checkbox" class="custom-control-input" name="healthcover[]" value="Income Protection" id="IncomeProtection">
            <label class="custom-control-label mr-3" for="IncomeProtection" data-toggle="tooltip" data-placement="top" data-original-title="Income protection insurance (sometimes known as permanent health insurance) is a long-term insurance policy designed to help you if you can’t work because you’re ill or injured. It ensures you continue to receive a regular income until you retire or are able to return to work.">Income Protection</label>
        </div>
        <div class="custom-control custom-checkbox custom-control-inline">
            <input type="checkbox" class="custom-control-input" name="healthcover[]" value="Private Medical" id="PrivateMedical">
            <label class="custom-control-label mr-3" for="PrivateMedical" data-toggle="tooltip" data-placement="top" data-original-title="Health insurance is an insurance policy designed to cover the cost of private medical treatment. ... You can buy different types of policies that offer various levels of cover, at varying costs. This could include fast-track diagnostics for cancer or access to different cancer treatments not currently available on the NHS.">Private Medical</label>
        </div>
    </div>
</div>





<?php

// configure
$from = 'Contact Form <email@gmail.com>';
$sendTo = 'Contact Form <email@gmail.com>';
$subject = 'New message from website.com';
$fields = array('image_radio' => 'Free Gift Name', 'member' => 'Who’s the cover for','healthcover' => 'What type of cover do you need', 'smoke' => 'Have you smoked tobacco in the last 12 months' , 'illness' => 'Have you had any life threatening illnesses in the last 10 years','Message' => 'Message','name' => 'Full Name','email' => 'Email','contactNo' => 'Contact Number','occupation' => 'Occupation'); // array variable name => Text to appear in the email
$okMessage = 'Form successfully submitted. Thank you, We will get back to you soon!';
$errorMessage = 'There was an error while submitting the form. Please try again later';

// let's do the sending

try
{
    $emailText = "You have new message from contact form
=============================
";

    foreach ($_POST as $key => $value) {

        if (isset($fields[$key])) {
            $emailText .= "$fields[$key]: $value
";
        }
    }

    $headers = array('Content-Type: text/plain; charset="UTF-8";',
        'From: ' . $from,
        'Reply-To: ' . $from,
        'Return-Path: ' . $from,
    );

    mail($sendTo, $subject, $emailText, implode("
", $headers));

    $responseArray = array('type' => 'success', 'message' => $okMessage);
}
catch (\Exception $e)
{
    $responseArray = array('type' => 'danger', 'message' => $errorMessage);
}

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    $encoded = json_encode($responseArray);

    header('Content-Type: application/json');

    echo $encoded;
}
else {
    echo $responseArray['message'];
}

this is output in email

You have new message from contact form
=============================
Free Gift Name: Apple Watch
Who’s the cover for: Joint
What type of cover do you need: Array
Have you smoked tobacco in the last 12 months: Yes
Have you had any life threatening illnesses in the last 10 years: Yes
Message:
Full Name: gg
Email: gg@g.com
Contact Number: 1232
Occupation: blahh
  • 写回答

2条回答 默认 最新

  • dousong3760 2019-03-30 07:07
    关注

    You can use implode function to make a checkbox multi selection as a string.

    foreach ($_POST as $key => $value) {
    
        if (isset($fields[$key])) {
            $emailText .= "$fields[$key]: $value
    ";
        }
    }
    

    Try

    foreach ($_POST as $key => $value) {
    
        if (isset($fields[$key]) && $key != 'healthcover') {
            $emailText .= "$fields[$key]: $value
    ";
        }else{
            $emailText .= "$fields[$key]:".implode(',', $value);
       }
    }
    

    You can use br or any other tag instead of comma

    $emailText .= "$fields[$key]:".implode(',', $value)."
    ";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 webAPI接口返回值判断
  • ¥15 自动化测试 UI Automtion
  • ¥20 关于#深度学习#的问题:2708)输出:邻接矩阵A 或者 节点索引方式:通过随机游走或者其他方式,保持节点连接类似下图(语言-python)
  • ¥15 win2012 iscsi ipsec
  • ¥15 封装的 matplotlib animation 不显示图像
  • ¥15 python摄像头画面无法显示
  • ¥15 关于#3d#的问题:d标定算法(语言-python)
  • ¥15 cve,cnnvd漏洞扫描工具推荐
  • ¥15 图像超分real-esrgan网络自己训练模型遇到问题
  • ¥15 如何构建全国统一的物流管理平台?