【问题标题】:Display checkbox values in email在电子邮件中显示复选框值
【发布时间】:2013-06-08 20:00:02
【问题描述】:

在这个网站Site 上有 4 个复选框。目前复选框值未显示在电子邮件中。 要获取电子邮件中的复选框值需要做什么?

这是整个代码kontakt.phpsendmail.class.php

kontakt.php:

<form action="kontakt.php" method="post">
    <label for="name">Ihr Name:</label>
    <input type="text" class="get1" name="name" value="<?php echo htmlspecialchars($_POST['name']); ?>" />
    <br />
    <label for="phone">Telefonnummer (bitte nur Ziffern):</label>
    <input type="text" class="get1" name="phone" value="<?php echo htmlspecialchars($_POST['phone']); ?>" />
    <br />
    <label for="email">E-Mail-Adresse:</label>
    <input type="text" class="get1" name="email" value="<?php echo htmlspecialchars($_POST['email']); ?>" />
    <br />
    <label for="message">Ihre Mitteilung an uns:</label>
    <textarea cols="20" rows="5" name="message"><?php echo htmlspecialchars($_POST['message']); ?></textarea>
    <br />
    <label>Welche Leistungen interessieren Sie besonders?</label>
    <label style="display:inline;" for="dachstuehle">Dachstühle</label>  
    <input class="kaestchen" type="checkbox" name="interessen[]" id="dachstuehle" value="dachstuehle" />
    <label style="display:inline;" for="holzbau">Holzbau</label>
    <input class="kaestchen" type="checkbox" name="interessen[]" id="holzbau" value="holzbau" />
    <label style="display:inline;" for="innenausbau">Innenausbau</label>
    <input class="kaestchen" type="checkbox" name="interessen[]" id="innenausbau" value="innenausbau" />
    <label style="display:inline;" for="trocken">Trockenbau</label>
    <input class="kaestchen" type="checkbox" name="interessen[]" id="trockenbau" value="trockenbau" />
    <br /><br />
    <input type="hidden" value="1" name="s" />
    <input type="submit" value="Nachricht versenden" name="submit" />
</form>

sendmail.class.php:

<?php
class sendMail {
    var $to = 'email'; // set contact email
    var $name = '';
    var $phone = '';
    var $email = '';
    var $body = '';
    var $interessen = '';
    var $error = array();
    var $headers = array();

    function parseBody() {
        $message = '<html><body>';
        $message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
        $message .= '<tr style="background-color: #eee;"><td><strong>Name:</strong> </td><td>' . $this->name . '</td></tr>';
        $message .= "<tr><td><strong>Telefonnummer:</strong> </td><td>" . $this->phone . "</td>    </tr>";
        $message .= "<tr><td><strong>E-Mail-Adresse:</strong> </td><td>" . $this->email . "</td></tr>";
        $message .= "<tr><td><strong>Text:</strong> </td><td>" . $this->body . "</td></tr>";
        $message .= "<tr><td><strong>Interessiert an:</strong> </td><td>" . $this->interessen . "</td></tr>";
        $message .= "</table>";
        $message .= "</body></html>";
        $this->body = $message;
    }

    function send() {
        if ($this->error) {
            return FALSE;
        }

        if (mail($this->to, '=?utf-8?B?' . base64_encode($this->subject) . '?=', $this->body, $this->headers)) {
            return TRUE;
        } else {
            $this->error[] = 'Fehler beim senden';
            return FALSE;
        }
    }

}
?>

这是整个代码kontakt.phpsendmail.class.php

【问题讨论】:

  • 您希望它们如何显示在电子邮件中?逗号分隔?
  • interessen 将是一个数组,看起来您将其视为字符串?在你的全班我看不到你在哪里设置这个值。
  • 在您的sendmail.class.php 中,您不会检索$_POST['interessen'],它是一个数组。您需要将其添加到加载帖子值的函数中,并在其上调用implode() 以返回一个字符串。
  • 请注意,如果您有机会进行更改,建议将您的代码更新为 PHP5 样式类,而不是使用 var 关键字的旧 PHP4 样式。 php.net/manual/en/language.oop5.basic.php
  • 好的,我检查了你的 sendmail 类,你需要在你的 setParams() 方法中这样做

标签: php email checkbox


【解决方案1】:

简单...

所以只需像这样放入您的 setParams() 方法.....

function setParams($post)
  {
  $this->interessen = implode(", ",$post['interessen']);
  //REST OF SETPARAMS STUFF...leave alone
 }

然后在你的 parseBody()...

确保与“interessen”相呼应的行是这样的...

 $message .= "<tr><td><strong>Interessiert an:</strong> </td><td>". $this->interessen ."</td>

在你上面的例子中。

【讨论】:

  • 只有一个问题:$string = implode(",",$this->interessen); 去哪儿了?我在 PHP 方面没有那么先进。
  • 它给了我错误信息:Warning: implode(): Invalid arguments pass in /mnt/web3/a2/69/53523169/htdocs/das-bauteam/php/sendmail.class.php 在线53 警告:无法修改标头信息 - 标头已由 /mnt/web3/a2 中的(输出开始于 /mnt/web3/a2/69/53523169/htdocs/das-bauteam/php/sendmail.class.php:53)发送/69/53523169/htdocs/das-bauteam/kontakt.php 第 11 行
  • 检查了您的 sendmail 类代码,并且您需要在发送标头之前执行此操作...。它也没有被声明为 post 变量...。我会在一分钟内提供代码跨度>
  • 完美!谢谢你。请支持我的问题并给我您的电子邮件,以便我将来可以给您一些任务。我可以付钱给你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 2014-06-05
  • 2016-06-30
相关资源
最近更新 更多