2017-02-23 71 views
-2

我目前正在尝试在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); 

?> 
+0

打开错误报告并开始进行一些调试,您需要检查多个事项,其中一些取决于您使用的操作系统等,但从打开错误报告开始并解决错误即将开始。 – Epodax

+0

此表单工作正常,没有错误,您使用本地主机还是实时服务器? –

+0

即时通讯使用在线服务器 – user3719881

回答

0

貌似没有启用您的邮件功能,使之:

  1. 如果没有安装的Sendmail,安装:apt-get install Sendmail
  2. 正确配置hosts文件:nano/etc/hos TS和确保行看起来是这样的:127.0.0.1本地主机yourhostnamehere
  3. 运行sendmail的配置和回答“Y”的一切:sendmailconfig
  4. 重新启动的阿帕奇:服务的Apache2重启

另一种选择是:

  1. 命令和apt-get安装PHP梨
  2. 须藤梨安装邮件
  3. 须藤梨安装Net_SMTP
  4. 须藤梨安装Auth_SASL
  5. 须藤梨安装mail_mime
  6. 命令和apt-get安装后缀
  7. 你应该得到一个安装对话框:确保互联网站点选择邮件服务器名称为localhost
  8. 须藤纳米/etc/php5/apache2/php.ini设置 sendmail_path =/usr/sbin目录/ sendmail的-t -i
  9. 服务的apache2重启

现在ÿ你完成了!

+0

我有一个供应商为我的网站如何工作? – user3719881

+0

如果您有权访问服务器,然后尝试使用简单的PHP代码发送邮件,或者联系您的管理员 –