将复选框值传递给 javascript 和 PHP 邮件

Posted

技术标签:

【中文标题】将复选框值传递给 javascript 和 PHP 邮件【英文标题】:Passing checkbox values to javascript and PHP mail 【发布时间】:2022-01-23 21:44:45 【问题描述】:

我正在尝试将复选框值传递给 php,但兴趣字段显示为空白。我删除了 javascript 验证并将其直接发送到 PHP。所有其他字段都显示正常。我只想列出选中的复选框。

html
====================================
<fieldset>
<input type="checkbox" name="interests[]" value="Workout" /><label for="workout">Workout</label><br />
<input type="checkbox" name="interests[]" value="Practice" /><label for="practice">Practice</label><br />
<input type="checkbox" name="interests[]" value="Training" /><label for="practice">Training</label><br />
</fieldset>
PHP
====================================
<?php

$field_full_name = $_POST['names'];

if(isset($_POST['interests']))
$field_interests = 'interests';



$mail_to = 'me@mail.com';

$subject = 'Message from a visitor '.$field_full_name;

$body_message = 'From: '.$field_full_name."\n";

$body_message .= 'Interest: '.$field_interests."\n";

$headers = 'From: '.$field_email."\r\n";

$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);


if ($mail_status)  ?>
    <script language="javascript" type="text/javascript">
        window.location = 'index.html';
    </script>
<?php

else  ?>
    <script language="javascript" type="text/javascript">
        window.location = 'index.html';
    </script>
<?php

?>

【问题讨论】:

您是如何提交表单的?还有,当你 print_r($_POST); 试试 $body_message .= '兴趣:'.$field_interests."\n";更改为 $body_message .= 'Interest: '.$field_interests[0]."\n"; 【参考方案1】:

那是因为它是一个数组,而不是一个标量值;或者至少直到你用一个字符串替换它。替换这个:

$field_interests = 'interests';

$field_interests = (is_array($_POST['interests']) ? $_POST['interests'] : []);
$field_interests = (count($field_interests) > 0 ? implode(',', $field_interests) : 'none');

虽然您也确实阅读了有关将原始字符串安全地转换为 html 的内容,但您一定会在使用这些行的过程中产生大量错误

$body_message = 'From: '.$field_full_name."\n";

使用htmlentitieshtmlspecialchars 将字符串编码为html,

$body_message = 'From: ' . htmlentities($field_full_name) . "\n";

或者更好,

$body_message = sprintf('From: %s' . PHP_EOL, htmlentities($field_full_name) );

【讨论】:

DCR 和 Raxi 感谢你们的帮助。不幸的是,我无法解决这个问题。我不想添加一个 jquery 元素,因为它是验证过程的一部分。 ` $('#register-form').each( function() var form = $(this); //form.validate(); form.submit(function(e) if (!e.isDefaultPrevented()) jQuery.post(this.action, 'names':$('input[name="register_names"]').val(), 'email':$('input[ name="register_email"]').val(), ,function(data) form.fadeOut('fast', function() $(this).siblings('p.register_success_box').show(); ); ); e.preventDefault(); ); )`

以上是关于将复选框值传递给 javascript 和 PHP 邮件的主要内容,如果未能解决你的问题,请参考以下文章

通过 knockout.js 将选中的复选框值传递给 javascript

使用 AJAX 将复选框值 1 如果选中,如果不是 0 传递给 PHP

如何将一组选中/未选中的复选框值传递给 PHP 电子邮件生成器?

如何使用 PHP 将复选框的值传递给 mySQL 数据库?

如何使用 Javascript 和 Ajax 将 HTML 单选按钮值传递给 PHP 变量?

如何将选中的复选框值传递给另一个页面?