【问题标题】:Contact form with validation and response in php在 php 中带有验证和响应的联系表单
【发布时间】:2017-02-23 08:41:03
【问题描述】:

我目前正在尝试用 html 和 php 编写联系表格,但是发送按钮没有响应,并且消息也没有发送到电子邮件我也尝试了不同的邮件地址,但它也没有工作。我还没有发现问题。

HTML:

<div class="col-xs-12 col-md-7">
            <h3>Kontaktformular</h3>
            <form class="row" role="form" name="contact-form" id="contact-form" action="contact-send.php" method="POST">
                <div class="col-md-6">
                    <div class="form-group">
                        <input type="name" class="form-control contact-form " id="contact-name" placeholder="Name" name="contact[name]">
                    </div>
                    <div class="form-group">
                        <input class="contact-form form-control " type="text" placeholder="Email" name="contact[email]" id="contact-email">
                    </div>
                    <div class="form-group">
                        <input class="contact-form form-control " type="text" placeholder="Betreff" name="contact[subject]" id="contact-subject">
                    </div>
                </div>
                <div class="col-md-6">
                    <div class="form-group message">
                        <textarea class="form-control input-row-3 contact-form " rows="6" placeholder="Nachricht" name="contact[message]" id="contact-message"></textarea>
                    </div>
                </div>
                <div class="col-md-12">
                    <div class="form-group text-right button-submit btn-submit">
                        <button type="submit" class="btn btn-dark button-send">SENDEN</button>
                        <div class="message-success alert-success alert hidden"><i class="fa fa-check"></i></div>
                    </div>
                </div>
            </form>
        </div>

PHP:

<?php


$email = "trissa1992@gmail.com";


$required = array('name', 'email', 'subject', 'message');
$response = array('status' => 'failed', 'errors'=>array());

if(isset($_POST['contact'])) {
foreach($_POST['contact'] as $field => $value) {
    //check required field if empty
    if($value == '' && in_array($field, $required)) {
        $response['errors'][$field] = $field;
    }
}

//validate email
if(!isset($response['errors']['email'])) {
    if(!filter_var($_POST['contact']['email'], FILTER_VALIDATE_EMAIL)) {
        $response['errors']['email'] = 'email';
    }
}
}

if(empty($response['errors'])) {
$response['status'] = 'success';

$data = $_POST['contact'];

$headers = "";

$message = $data['message'];
$message .= "\n\n";
$message .= " Name: " . $data['name'];
$message .= " Email: " . $data['email'];

$subject = 'Subject: '. $data['subject']. "\r\n";
$headers = 'From: '. $data['email']. "\r\n" .'Reply-To: '. $data['email']. "\r\n" .'X-Mailer: PHP/' . phpversion();


if (mail($email, $subject, $message, $headers)) {

} else {
    $response['status'] = 'failed';
}
}

echo json_encode($response);

?>

【问题讨论】:

  • 打开错误报告并开始做一些调试,有很多事情需要检查,其中一些取决于您使用的操作系统等等,但首先要打开错误报告并解决即将出现的错误。
  • 此表单工作正常,没有错误,您使用的是本地主机还是实时服务器?
  • 我正在使用实时服务器

标签: php forms validation response contact


【解决方案1】:

您的邮件功能似乎未启用,请启用它:

  1. 如果 Sendmail 没有安装,安装它:apt-get install Sendmail
  2. 正确配置 hosts 文件:nano /etc/hosts 并确保该行如下所示:127.0.0.1 localhost yourhostnamehere
  3. 运行 sendmail 配置并对所有内容回答“Y”:sendmailconfig
  4. 重启 apache:service apache2 restart

另一个选项是:

  1. sudo apt-get install php-pear
  2. sudo pear 安装邮件
  3. sudo pear install Net_SMTP
  4. sudo pear install Auth_SASL
  5. sudo pear install mail_mime
  6. sudo apt-get install postfix
  7. 您应该会看到一个安装对话框:确保选择了 Internet 站点并且邮件服务器名称是 localhost
  8. sudo nano /etc/php5/apache2/php.ini 设置 sendmail_path = /usr/sbin/sendmail -t -i
  9. 服务 apache2 重启

现在你已经完成了!

【讨论】:

  • 我的网站有一个提供商,它是如何工作的?
  • 如果您有权访问服务器,请尝试使用简单的 php 代码发送邮件,或联系您的管理员
猜你喜欢
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多