2014-01-28 2 views
-1

Я новичок в программировании на PHP. Я нашел один учебник для контактной формы, но он не работал. Я не знаю, как я могу решить эту проблему, потому что я думаю, что нет синтаксической ошибки. Я использую WAMP-сервер для подключения PHP.PHP Пользовательская форму обратной связи

Вот PHP код

<?php 

if (isset($_POST['contact_name']) && isset($_POST['contact_email']) && isset($_POST['contact_text'])) { 
     $contact_name = $_POST['contact_name']; 
     $contact_email = $_POST['contact_email']; 
     $contact_text = $_POST['contact_text']; 

     if (!empty($contact_name) && !empty($contact_email) && !empty($contact_text)) { 
      $to = '[email protected]'; 
      $subject = 'Custom Contact Form'; 
      $body = $contact_name."\n".$contact_text; 
      $headers ='From: '.$contact_email; 

      if (@mail($to, $subject, $body, $headers)) { 
       echo 'Your form has been submitted. We\'ll contact you shortly.'; 
       } else { 
       echo 'There was an error'; 
      } 

     }else { 
      echo 'All fields are required.'; 
     } 
} 

?> 

и вот HTML код:

<form action="index.php" method="POST"> 
     Name: <br><input type ="text" name="contact_name"><br><br> 
     Email address: <br><input type="text" name="contact_email"><br><br> 
     Message:<br> 
     <textarea name="contact_text" rows="6" cols="30"></textarea><br><br> 
     <input type="submit" value="Send"> 
</form> 

Пожалуйста, помогите.

+5

И какая ошибка? –

+1

разработать «не работает». Правильно ли установлена ​​учетная запись SMTP в php.ini? – Raptor

+4

Удалите @ перед почтой, так как это очень плохой стиль. Вероятно, вы просто не настроили почтовый сервер, а почта не удалась, но вы подавили его через @. – Samuel

ответ

0

Если у вас возникли проблемы с функцией mail(), то, скорее всего, потому что у вас нет почтового сервера, работающие на вашем компьютере. Я предлагаю использовать PHPMailer. Он довольно прост в использовании (он даже поставляется с примером использования учетной записи Gmail для отправки писем).

Кроме того, вам не нужно все isset() проверки, поскольку вы также используете !empty() сразу после того, потому что empty() проверяет, является ли переменная установлена, и если это «пустой». Более подробное описание можно найти here.

+0

Спасибо, помощник. Я нашел альтернативный скрипт sendmail, который хорошо работал на Wamp-сервере. – user3152357

+0

Нет проблем. Я никогда не слышал об этом скрипте sendmail. Если у вас есть ссылка на него, я хотел бы посмотреть, как это работает. – NathanW

+0

Да, вот оно - http://glob.com.au/sendmail/ – user3152357

0
if (@mail($to, $subject, $body, $headers)) { 

синтаксисом ошибка, удаление @ полукокса, прежде почты слова

+2

Просто для вашей информации в случае, (также может быть, что я просто читаю его неправильно) - '@' - вполне допустимый синтаксис, хотя и не очень хорошая практика. Он используется для подавления ошибок, вызванных определенной функцией. –

Смежные вопросы