如何通过PHP POST实现HTML表单复选框勾选时发送邮件
解决方法
你的问题根源是PHP代码里完全没有处理复选框的提交数据,所以邮件里不会显示它的状态。另外还有个小细节问题:HTML里复选框的id是protecciondatos,但对应的label的for属性写的是proteccion-datos,两者不匹配——虽然不影响表单提交,但会导致点击label文本时无法选中复选框,建议同步修正。
步骤1:修改PHP代码,添加复选框状态处理
在PHP中,复选框只有被勾选时才会出现在$_POST数组里,所以需要用isset()判断它是否存在,转换成可读的状态文本后,再添加到邮件内容中。
修改后的PHP代码如下:
<?php $nombre = $_POST['nombre']; $empresa = $_POST['empresa']; $email = $_POST['email']; // 处理复选框状态 $proteccionDatos = isset($_POST['protecciondatos']) ? '已接受隐私政策' : '未接受隐私政策'; $mensaje = "NOMBRE: " . $nombre . "\n"; $mensaje .= "EMPRESA: " . $empresa . "\n"; $mensaje .= "E-MAIL: " . $email . "\n"; $mensaje .= "MENSAJE: " . $_POST['mensaje'] . "\n"; // 添加复选框状态到邮件内容 $mensaje .= "隐私政策同意状态: " . $proteccionDatos . "\n"; $mensaje .= "FECHA DEL ENVÍO: " . date('d/m/Y', time()); $para = 'xxxx@xxx'; $asunto = 'Blablabla'; mail($para, $asunto, utf8_decode($mensaje)); ?>
步骤2:修正HTML的label关联问题
把label的for属性改成和input的id一致:
<label for="protecciondatos">He leído y acepto la <a href="#">política de protección de datos</a> </label>
修改完成后,提交表单时,邮件里就会正常显示用户的隐私政策同意状态,同时label和复选框的关联交互也能正常工作。
内容的提问来源于stack exchange,提问作者Albert
相关产品推荐
相关产品推荐

