在php中验证并响应的联系表格
问题描述:
我目前正在尝试在html和php中编写联系表单,但发送按钮没有响应,并且邮件也没有发送到电子邮件,我还尝试了不同的邮件地址但它也没有工作。我还没有发现问题。在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 = "[email protected]";
$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);
?>
答
貌似没有启用您的邮件功能,使之:
- 如果没有安装的Sendmail,安装:apt-get install Sendmail
- 正确配置hosts文件:nano/etc/hos TS和确保行看起来是这样的:127.0.0.1本地主机yourhostnamehere
- 运行sendmail的配置和回答“Y”的一切:sendmailconfig
- 重新启动的阿帕奇:服务的Apache2重启
另一种选择是:
- 命令和apt-get安装PHP梨
- 须藤梨安装邮件
- 须藤梨安装Net_SMTP
- 须藤梨安装Auth_SASL
- 须藤梨安装mail_mime
- 命令和apt-get安装后缀
- 你应该得到一个安装对话框:确保互联网站点选择邮件服务器名称为localhost
- 须藤纳米/etc/php5/apache2/php.ini设置 sendmail_path =/usr/sbin目录/ sendmail的-t -i
- 服务的apache2重启
现在ÿ你完成了!
+0
我有一个供应商为我的网站如何工作? – user3719881
+0
如果您有权访问服务器,然后尝试使用简单的PHP代码发送邮件,或者联系您的管理员 –
打开错误报告并开始进行一些调试,您需要检查多个事项,其中一些取决于您使用的操作系统等,但从打开错误报告开始并解决错误即将开始。 – Epodax
此表单工作正常,没有错误,您使用本地主机还是实时服务器? –
即时通讯使用在线服务器 – user3719881