2014-02-20 5 views
1

Я очень новичок в php и не могу понять, что в этом плохого. Любая помощь будет оценена по достоинству. Кроме того, было бы полезно иметь способ проверить, является ли это я или только мой хостинг, который не позволит мне отправить электронное письмо. Итак, если есть способ, который я мог бы сделать, пожалуйста, дайте мне знать.Проблемы с формой php mail()

<?php 
session_start(); 
$visitor_email = ''; 
$user_message = ''; 

//Validates the email address that the user entered 
function spamcheck($field) 
    { 
    // Sanitize e-mail address 
$field=filter_var($field, FILTER_SANITIZE_EMAIL); 
// Validate e-mail address 
if(filter_var($field, FILTER_VALIDATE_EMAIL)) 
    { 
    return TRUE; 
} 
else 
{ 
return FALSE; 
} 
} 


//When user clicks 'submit' 
if (!isset($_POST['submit'])) 
{ 
$visitor_email = $_POST['email']; 
$user_message = $_POST['message']; 
//if user entered email address 
if (isset($_POST['email'])) 
    { 
    // Check if email address is valid 
    $mailcheck = spamcheck($visitor_email); 
     if ($mailcheck==FALSE) 
      { 
      echo "Invalid input"; 
      } 
     else 
      { 
      $to = "[email protected]"; 
      $subject="Customer Feedback"; 
      $from = $visitor_email; 
      $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; 

      $body = "A patron submitted the contact form:\n". 
      "Email: $visitor_email \n". 
      "Message: \n ". 
      "$user_message\n". 
      "IP: $ip\n";  

      $headers = "From: $from \r\n"; 
      $headers .= "Reply-To: $visitor_email \r\n"; 

      mail($to, $subject, $body,$headers); 

      header('Location: home.html'); 
      } 
} 
} 
?> 

<form id="feedBackForm" action="<?php echo htmlentities($_SERVER['PHP_SELF'])?>" method="post"> 
       <fieldset id="personal"> 
        <legend>Your Information</legend> 
         <label for="email">Contact Email: </label> 
         <input id="email" name="email" type="email" value='<?php echo htmlentities($visitor_email) ?>'/> 
       </fieldset> 
       <fieldset id="text"> 
        <legend>Message:</legend> 
         <label for="message"></label> 
         <textarea id="message" name="message"><?php echo htmlentities($user_message) ?></textarea> 
       </fieldset><p><input type="submit" value="Submit" name="submit"/> 
       <input type="reset" value="Reset"/> 
       </p> 
       </form> 

Я попробовал несколько различных итераций, и это именно там, где я, случается в тот момент,

+1

В чем проблема? Что не работает? Вы получаете сообщения об ошибках? –

+2

Это 'if (! Isset ($ _ POST ['submit']))' вы говорите ', если это ** не ** установлено, ..... "вы хотите' if (isset ($ _ POST [ 'submit'])) ' –

+1

@ Fred-ii- Вам следует отправить ответ. – jeroen

ответ

5

Это if (!isset($_POST['submit'])) вы говорите «если это не комплект, .....»

вы хотите if(isset($_POST['submit']))

(говорю это сейчас, если он установлен, выполнить все внутри условного оператора)

NB:! является логическим оператором not.

Опубликовано по просьбе jeroen

Edit:

я проверил свой код после установки правильного условного оператора (удаления логического not оператора), и письмо было отправлено и получено. Поэтому вам нужно проверить, настроен ли ваш сервер для обработки почты, или проверить свой СПАМ, а также журналы сервера.

+0

Это помогло, и код прошел, и он даже перенаправил страницу правильно, но не было отправлено ни одного письма. – Fulmetal5

+0

Выполняете ли вы код с вашего собственного компьютера (localhost) или на хостинговой службе? См. Мое редактирование, я проверил это, и результат был в порядке. @ Fulmetal5 –

+0

Хостинг. – Fulmetal5

1

Сначала я думаю, что вы должны изменить

if (!isset($_POST['submit'])) в if (isset($_POST['submit']))

потому, что он выглядят как ошибка

+0

ОК, он перенаправил меня правильно, но письмо не было отправлено. Поэтому мне кажется, что он прошел через все проверки и что-то еще не так. – Fulmetal5

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