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 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看