несколько значений флажков не отправляются на почту в php - PullRequest
0 голосов
/ 30 марта 2019

Я довольно новичок в программировании на PHP. В настоящее время у меня есть проблема с моими флажками, когда я отправляю форму, все поля работают нормально, но я не получаю многократное значение флажка. Просто получаю текст "ARRAY" по электронной почте. Пожалуйста, проверьте мой код ниже .................................... ..................

<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\n=============================\n";

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

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

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

    mail($sendTo, $subject, $emailText, implode("\n", $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'];
}

это вывод по электронной почте

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 ]

0 голосов
/ 30 марта 2019
html

<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\n=============================\n";

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

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

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

    mail($sendTo, $subject, $emailText, implode("\n", $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'];
}

теперь выводим

You have new message from contact form
=============================
Free Gift Name: Apple Watch
Who’s the cover for: Individual
What type of cover do you need:Life Insurance,Critical Illness CoverHave you smoked tobacco in the last 12 months: No
Have you had any life threatening illnesses in the last 10 years: Yes
Message:
Full Name: rintu
Email: gg@g.com
Contact Number: 1232
Occupation: ghghh

желаем вывод

You have new message from contact form
=============================
Free Gift Name: Apple Watch
Who’s the cover for: Individual
What type of cover do you need:Life Insurance,Critical Illness Cover
Have you smoked tobacco in the last 12 months: No
Have you had any life threatening illnesses in the last 10 years: Yes
Message:
Full Name: rintu
Email: gg@g.com
Contact Number: 1232
Occupation: ghghh
0 голосов
/ 30 марта 2019

Вы можете использовать функцию implode , чтобы сделать множественный выбор флажка в виде строки.

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

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

Попробуйте

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

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

Вы можете использовать br или любой другой тег вместо запятой

$emailText .= "$fields[$key]:".implode(',', $value)."\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...