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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?