【问题标题】:Passing checkbox values to javascript and PHP mail将复选框值传递给 javascript 和 PHP 邮件
【发布时间】: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";

标签: php html checkbox


【解决方案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(); } }); })`
猜你喜欢
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 2012-06-01
  • 2016-08-21
  • 2020-04-09
相关资源
最近更新 更多