发送电子邮件时显示“名称”而不是“ ID”

时间:2018-10-18 03:16:00

标签: php phpmailer html-email

我是PHP的初学者。现在,我要设置发送电子邮件。但不幸的是,我在某些字段中使用“ ID”,并显示“ Name”。 例如:

<div class="form-group">
                            <label for="contact_departement_id"><?php echo $lang['contact_departement_id'] ?></label>
                            <select class="form-control" name="contact_departement_id" id="contact_departement_id">
                                <option value="x"><?php echo $lang['chooseone'] ?></option>
                                <?php foreach($listDepartement['datas'] as $departement): ?>
                                    <option 
                                        <?php 
                                            echo ($state == 'edit') && ($departement->departement_id == $datas->contact_departement_id) ? 'selected="selected"': '';
                                        ?>
                                        value="<?php echo $departement->departement_id ?>">
                                        <?php echo $departement->departement_name ?>
                                    </option>
                                <?php endforeach ?>
                            </select>
                        </div>  

然后我设置了电子邮件

$contact_name = $_POST['contact_name'];
$contact_ext = $_POST['contact_ext'];
$contact_direktorat_id = $_POST['contact_direktorat_id'];
$contact_departement_id = $_POST['contact_departement_id'];
$contact_lokasi_id = $_POST['contact_lokasi_id'];
//$mail->SMTPSecure = 'tls';                            // Enable encryption, 'ssl' also accepted
$message = file_get_contents('mail.html'); 
    $message = str_replace('%contact_name%', $contact_name, $message); 
    $message = str_replace('%contact_ext%', $contact_ext, $message); 
    $message = str_replace('%contact_direktorat_id%', $contact_direktorat_id, $message); 
    $message = str_replace('%contact_departement_id%', $contact_departement_id, $message); 
    $message = str_replace('%contact_lokasi_id%', $contact_lokasi_id, $message); 

输出:

Dear All,

New Extention has been added. Here are details:
Contact Name: test
Ext: 123
Directorate: 2
Department: 2
Location: 4

我需要一些指导以显示“名称”而不是“ ID”

1 个答案:

答案 0 :(得分:0)

该表单提交option元素的value属性中的内容,而不是标签的内容。您需要提供名称映射,例如:

$departments = [
    '1' => 'Sales',
    '2' => 'Support',
    '3' => 'Accounts',
];

您应该在使用提交的值之前对其进行验证(因为客户端可能会提交垃圾邮件,黑客攻击等),然后通过数组将它们映射,例如:

if (!array_key_exists($_POST['contact_direktorat_id'], $departments)) {
    $contact_direktorat_name = $departments[$_POST['contact_direktorat_id']];
} else {
    $contact_direktorat_name = 'Unknown';
}

用所需的许多重复此操作,根据需要定义任意数量的数组,或者在数据库中查找值以验证它们而不是使用数组(尽管请确保不要对SQL注入攻击开放自己) -您有大致的想法。