2013-09-25 1 views
0

Я размещаю свой сайт на своем личном сервере Lubus Ubuntu. Все работает, но контактная форма. У меня Postfix настроен для отправки сообщений электронной почты через мой gmail smtp, и он работает блестяще. Я знаю, что мой сервер отправляет электронные письма. Я проверил это с помощью следующего кода несколько раз к различным адресам:Как я могу получить свою контактную форму для правильного вызова файла PHP?

echo "Test mail from postfix" | mail -s "Test Postfix" [email protected] 

Я также подтвердил, что PHP работает путем создания небольших PHP файлы «test.php» и сохранение его в моем/каталог var/www. Затем я вызываю файл, введя http://www.mywebsite.com/test.php в браузере. Он всегда работает независимо от отправки по адресу.

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

Вот контактная форма HTML код:

<form method="post" name="contact" action="mail.php"> 
     <input type="hidden" name="post" value="Send" /> 
     <label for="name">Name:</label> <input type="text" id="name" name="name"  class="required input_field" /> 
     <label for="email">Email Address:</label> <input type="text" id="email" name="email" class="validate-email required input_field" /> 
     <label for="url">Phone:</label> <input type="text" name="url" id="url" class="input_field" /> 
     <label for="text">Message:</label> <textarea id="text" name="text" rows="0" cols="0" class="required"></textarea> 
     <input style="font-weight: bold;" type="submit" class="submit_btn" name="submit" id="submit" value="Send" /> 
     <input style="font-weight: bold;" type="reset" class="submit_btn" name="reset" id="reset" value="Reset" /> 
    </form> 

Очевидно, что этот код будет установлен в пределах страницы и соответствие CSS.

А вот PHP файл «mail.php»:

<?php 
if(isset($_POST['email'])) { 

    // CHANGE THE TWO LINES BELOW 
    $email_to = "[email protected]"; 
    $email_subject = "OYH Tech Website Email"; 


    function died($error) { 
     // error code 
     echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
     echo "These errors appear below.<br /><br />"; 
     echo $error."<br /><br />"; 
     echo "Please go back and fix these errors.<br /><br />"; 
     die(); 
    } 

    // validation expected data exists 
     if(!isset($_POST['author']) ||  
     !isset($_POST['email']) || 
     !isset($_POST['url']) || 
     !isset($_POST['text'])) { 
     died('We are sorry, but there appears to be a problem with the form you submitted.');  
    } 

    $name = $_POST['author']; // required 
    $email_from = $_POST['email']; // required 
    $url = $_POST['url']; // not required 
    $text = $_POST['text']; // required 

    $error_message = ""; 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    if(!preg_match($email_exp,$email_from)) { 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
    } 
    $string_exp = "/^[A-Za-z .'-]+$/"; 
    if(!preg_match($string_exp,$name)) { 
    $error_message .= 'The name you entered does not appear to be valid.<br />'; 
    } 

    if(strlen($text) < 2) { 
    $error_message .= 'The message you entered does not appear to be valid.<br />'; 
    } 
    if(strlen($error_message) > 0) { 
    died($error_message); 
    } 
    $email_message = "Form details below.\n\n"; 

    function clean_string($string) { 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
     return str_replace($bad,"",$string); 
    } 

    $email_message .= "Name: ".clean_string($name)."\n"; 
    $email_message .= "Email: ".clean_string($email_from)."\n"; 
    $email_message .= "Phone: ".clean_string($url)."\n"; 
    $email_message .= "Message: ".clean_string($text)."\n"; 


    // email headers 
    $headers = 'Reply-To: '.$email_from."\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 
    mail($email_to, $email_subject, $email_message, $headers); 
    ?> 

Когда я нажимаю отправить на контактную форму, он загружает пустую страницу, и это все. Нет кода ошибки или сообщения какого-либо типа, и, что более важно, никакой электронной почты не доставлено. В некоторых браузерах появляется следующее сообщение: на веб-сайте произошла ошибка при получении http://www.mywebsite.com/mail.php. Возможно, он отключен для обслуживания или настроен неправильно.

Чтобы быть ясным, я просто хочу, чтобы эта контактная форма отправляла электронные письма на мой адрес gmail и ничего больше. Я не получаю письма на этом сервере.

Любая помощь была бы принята с благодарностью. Я работаю над этим постоянно 4 дня.

ответ

0

Во-первых, я хочу попросить вас очистить свой код. Часть вашего замешательства, вероятно, связана с вашим стилем кодирования. Для начала отделите функции и код обработки.

Во-вторых, ваш опубликованный код имеет небольшую погрешность, поскольку в заявлении if (isset ($ _ POST ['email'])) { не имеет подходящей близкой фигурной скобки. Этого было бы достаточно для генерации ошибки.

if(isset($_POST['email'])) { 
} 

Если ошибки не отображаются, то это может быть из-за настроек PHP, попробуйте установить уровень сообщений об ошибке в верхней части файла. См. Здесь ссылку: http://php.net/manual/en/function.error-reporting.php

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

Исправить и сообщить об этом.

+0

Ughhh, мне жаль, что я не видел ту тупую закрывающую скобу 3 дня назад. Это была вся игра в мяч. БОЛЬШОЕ СПАСИБО! Это НАКОНЕЦ работает! Мне так глупо! Что касается очистки кода, как я уверен, вы знаете, это процесс обучения. В моей защите это выглядит намного лучше, чем это было всего несколько дней назад. Я буду продолжать работать над этим: ~) – Mojoman317717

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

  • Нет связанных вопросов^_^