【问题标题】:How to add the 'checked' status of an input checkbox to be sent through email?如何添加要通过电子邮件发送的输入复选框的“已检查”状态?
【发布时间】:2016-11-20 06:54:09
【问题描述】:

我正在创建一个报价生成器联系人类型的表单,用户可以在其中选择他们的功能,并在底部输入他们的姓名、电子邮件和一条小消息。我正在使用简单联系表格的基础并使用 PHPMailer 发送表格。在继续整个项目之前,我创建了一个小测试页面,看看是否可以得到我正在寻找的结果。

我们将复选框输入的“值”设置为数字,以便报价生成器可以为所有内容定价,因此希望有一种简单的方法可以通过电子邮件发送特定复选框是否已被选中有名字

这是 HTML:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <div class="contact">

      <?php if(!empty($errors)): ?>
        <div class="panel">
          <ul><li><?php echo implode('</li><li>', $errors); ?></li></ul>
        </div>
      <?php endif; ?>

      <form action="contact.php" method="post">

        <label>
          Your Name *
          <input type="text" name="name" autocomplete="off"<?php echo isset($fields['name']) ? 'value="' . e($fields['name']) . '"' : '' ?>>
        </label>
        <label>
          Your email address *
          <input type="text" name="email" autocomplete="off"<?php echo isset($fields['email']) ? 'value="' . e($fields['email']) . '"' : '' ?>>
        </label>
        <label>
          Example feature
          <input type="checkbox" name="feature" class="option" value="25">
        </label>
        <label>
          Your message *
          <textarea name="message" row="8"<?php echo isset($fields['message']) ? e($fields['message']) : '' ?>></textarea>
        </label>

        <input type="submit" value="Send">

        <p class="muted">* means a required field</p>

      </form>

    </div>
  </body>
</html>
<?php
  unset($_SESSION['errors']);
  unset($_SESSION['fields']);
?>

这是 PHP 的一部分: 注意它提到 $m->Body 这是我需要回显复选框值的地方。

$m = new PHPMailer;

$m->isSMTP();
$m->SMTPAuth = true;

$m->Host = 'hosthere';
$m->Username = 'example@example.com';
$m->Password = 'password';
$m->SMTPSecure = 'ssl';
$m->Port = 465;

$m->isHTML();

$m->Subject = 'Contact form submitted';
$m->Body = 'From: ' . $fields['name'] . ' (' . $fields['email'] . ')<p>' . $fields['message'] . '</p> ' . $fields['feature'];

$m->FromName = 'Contact';

$m->AddAddress('example@example.com', 'User Name');

if($m->send()) {
  header('Location: thanks.php');
  die();
} else {
  $errors[] = "Sorry, could not send email. Try again later.";
}

【问题讨论】:

  • 这是您发送电子邮件contact.php 的 php 文件吗?
  • 我认为应该是 $_POST['name'] 而不是 $fields['name']。对吗?
  • 是的,它从 index.php 发送到 contact.php。
  • @QuỳnhNguyễn 它正在使用 $fields = [ 'name' => $_POST['name'], 'email' => $_POST['email'], 'message' => $_POST[ '消息'] ];
  • 我只是没有在上面的代码 sn-p 中包含那部分

标签: php jquery html email checkbox


【解决方案1】:

尝试改变

$m->Body = 'From: ' . $fields['name'] . ' (' . $fields['email'] . ')<p>' . $fields['message'] . '</p> ' . $fields['feature'];  

$feature = "";
if(isset($_POST['feature'])){
   $feature = $_POST['feature'];
}
$m->Body = 'From: ' . $fields['name'] . ' (' . $fields['email'] . ')<p>' . $fields['message'] . '</p> ' . $feature;

【讨论】:

  • 太棒了!它有效,我将如何添加多个输入字段,会是什么样子?
  • 如果你这样做$m-&gt;Body = 'From: ' . $fields['name'] . ' (' . $fields['email'] . ')&lt;p&gt;' . $fields['message'] . '&lt;/p&gt; ' . $feature . " " . $feature2;,它将在一行中。但是如果你这样做$m-&gt;Body = 'From: ' . $fields['name'] . ' (' . $fields['email'] . ')&lt;p&gt;' . $fields['message'] . '&lt;/p&gt; ' . $feature . "&lt;br&gt;" . $feature2;$feature之后会有换行符。
  • 我不需要在isset部分也设置$feature2吗?
  • 是的,你也需要。只需将$_POST['feature'] 更改为其他复选框的名称即可。
  • 好的,所以我添加了这个以添加第二个复选框。 $功能=“”; $featuretwo = ""; if(isset($_POST['feature'], $_POST['featuretwo'])){ $feature = $_POST['feature']; $feature = $_POST['featuretwo']; } 这似乎不起作用
猜你喜欢
  • 2021-02-08
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 2022-12-10
  • 2017-08-01
  • 2018-04-19
相关资源
最近更新 更多