2015-11-24 5 views
2

У меня трудное время с синтаксисом PHP при попытке настроить макет контента, отправленного с использованием формы PHP. Я пытаюсь отобразить каждый вход на другой линии в электронной почте ... Ниже мой PHP код:Форма обратной связи Код Форматирование Проблема

<?php 
// Section 1. 
if($_POST['name_here_goes'] == ''){ 

    // Section 2. 
    if (!empty($_POST['firstName']) && !empty($_POST['lastName']) && !empty($_POST['emailAddress'])) { 

     $to   = '####@############.com'; 
     $subject  = 'NEW Contact Form'; 
     $message  = $_POST['firstName'] "\n\n" $_POST['lastName']; 
     $headers  = 'From: ' . $_POST['emailAddress'] . ' ' . "\r\n" . 
         'Reply-To: ' . $_POST['emailAddress'] . '' . "\r\n" . 
         'X-Mailer: PHP/' . phpversion(); 

     // Section 3. 
     if (mail($to, $subject, $message, $headers)) { 
      echo 'Email sent. Congrats!'; 
     } 
    }else{ 
     echo 'Please fill all the info.'; 
    } 

}else{ 

    // Section 4. 
    echo 'Spam detected!'; 

} 

Вот мой HTML код:

<form name="contact" method="post" action="sell.php"> 
    <div> 
     <input type="text" name="firstName" value="" placeholder="First Name" /> 
     <input type="text" name="lastName" value="" placeholder="Last Name" /> 
     <input type="text" name="emailAddress" value="" placeholder="Email" /> 

    </div> 
    <div> 
     <input type="text" class="robotic" name="name_here_goes" value="" /> 
     <input type="submit" name="submit" value="Submit"/> 
    </div> 
</form> 
+0

Построив действительные почты не является - тривиальная в ней самая простая форма и очень сложная, как только вы выходите за рамки простых случаев использования. Я бы настоятельно рекомендовал использовать ранее существовавшую библиотеку для этого, например. PHPMailer или SwiftMailer. Оба являются удивительными, проверенными, высоконадежными библиотеками. Вероятно, есть и другие, но это только те, которые я лично использовал. – JamesG

+0

Это очень простая форма. Я не уверен, что мне нужно это сделать? – Nick

+0

@ Fred-ii- Извините, я обновил текущий код ... – Nick

ответ

1

Вы видите эту строку:

$message  = $_POST['firstName'] "\n\n" $_POST['lastName']; 

Это отсутствует Сцепляет для него, между массивами POST и имеющие отчеты об ошибках набора, чтобы поймать и дисплей, бросил бы вам:

Parse error: syntax error, unexpected '"\n\n"' (T_CONSTANT_ENCAPSED_STRING) in /path/to/file.php on line x

Изменить это:

$message  = $_POST['firstName'] . "\n\n" . $_POST['lastName']; 
           ^ ^added 

Однако, вам нужно будет работать на ваших заголовков немного, и вы не должны быть пролетая мимо POST массивы непосредственно в этом роде, вы можете получить пострадали от XSS инъекции.

Ссылки:

Добавить error reporting в верхней части файла (ов), который поможет найти ошибки.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

Sidenote: Отображение ошибок не должно быть сделано только в постановке, и никогда производства.


Плюс, как указано в комментариях. PHPmailer/Swiftmailer уже настроены для вас, чтобы использовать и работать очень хорошо для обработки обычного текста и отформатированной в формате HTML почты.


Edit:

"Sorry for the delayed response.. That worked! But how would you get it to direct to a different page after submission? – Nick"

Вы бы использовать заголовок http://php.net/manual/en/function.header.php и заменяя echo 'Email sent. Congrats!'; с заголовком, вы не могут использовать оба.

if (mail($to, $subject, $message, $headers)) { 
     header('Location: http://www.example.com/'); 
     exit; 
    } 

Пример из руководства:

header('Location: http://www.example.com/'); 
exit; 

Убедитесь, что вы не выводя перед тем заголовком.Если вы получите уведомление, консультации:

Вы также можете обратиться к следующему для более методов перенаправления:

+0

Извините за отложенный ответ .. Это сработало! Но как вы можете заставить его перейти на другую страницу после отправки? – Nick

+0

@ Ник не беспокоится. Перезагрузите мой ответ в разделе ** Редактировать **. Если он решил вашу проблему, подумайте о принятии ответа. Вот как http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work, затем вернитесь сюда и сделайте то же самое с отметкой галочки/галочки, пока он не станет зеленым. Это сообщает сообществу, что решение найдено. В противном случае другие могут подумать, что вопрос все еще открыт и может захотеть опубликовать (более) ответы. –