2015-11-05 1 views
-1

Я думаю, что это простое решение для тех, кто знаком с PHP. Я искал ответ в течение 2 дней. Хотя отличная информация, никто не решает. См. Третий раздел ниже - я получаю форму, меньшую информацию о поле. Что я делаю неправильно?Поля ввода PHP не принимаются. Отработано 2 дня - не могу решить

Обратите внимание, что форма сама обернута в теги <html><body><section>, которые не отображаются ниже.

Это форма:

<form name="Seller" id="restaurant-fm" action="send2.php" method="POST" enctype="text/plain"> 
<input type="text" name="name" required="required" id="name" size="25"  
value="" placeholder="Your name" autocomplete="on" tabindex="1"   

class="txtinput"> 
<input type="email" name="email" required="required" id="email" size="25" value="" placeholder="Your e-mail address" autocomplete="on" tabindex="2"   
class="txtinput">  
<input type="tel" name="phone" id="phone" placeholder="Your phone number" tabindex="3" size="12" value="" class="txtinput"> 
<textarea name="message" id="inquiry" placeholder="(Optional) Enter message here..." tabindex="4" class="txtblock"></textarea> 

<section id="buttons"> 
<input type="submit" name="submit" id="submitbtn" class="submitbtn" tabindex="6" value="CLICK TO GET STARTED"> 
<br style="clear:both;"> 
</section> 
</form> 

2) Это скрипт PHP посыла я использую:

<?PHP 
$name= $_POST['name1']; 
$email= $_POST['email']; 
$phone= $_POST['phone']; 
$subject = $_POST["subject"]; 
$inquiry= $_POST['message']; 
$to ="[email protected]"; 
$subject= "New Contact"; 
$message= "A visitor sent you the following information: \n\nname:$name; \n\nemail:$email; \n\nphone:$phone; \n\nmessage:$message; \n\nPlease respond to this inquiry immediately"; 
$headers = "From: $email"; 
{mail($to,$subject,$message); 
header("Location:/About.html");} 
?> 

3) Вот что я получаю от формы:

A visitor sent you the following information: 

name:; 

email:; 

phone:; 

message:; 
+0

Где 'form'opening тег? –

+4

сначала избавиться от 'enctype =" text/plain "', что является основной причиной. и у вас нет атрибута имени 'name1', у вас есть' name'. Проверьте наличие ошибок. Проконсультируйтесь с http://php.net/manual/en/function.error-reporting.php –

+2

* Пожалуйста, немедленно ответьте на это задание *? Руд. Отлаживайте свой код с помощью var_dump ($ _ POST); и идти оттуда. –

ответ

3

Во-первых, вам необходимо удалить enctype="text/plain" из формы.

Прочтите следующее Q & A на стеке об этом; это более описательный:

Тогда вы используете <input type="text" name="name"... и используя name в качестве имени атрибута, но вы используете name1 для массива POST $_POST['name1'].

У вас также есть куча полуколонок в вашем $message= "A visitor...., которые являются символами конца символов; удалить их.

Тогда у вас есть следующее, которое не включено в вашу функцию mail(), поэтому from никогда не произойдет.

$headers = "From: $email"; 

и вы также должны добавить переменную $headers в mail($to,$subject,$message);

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

Кроме того, необходимо удалить скобки из:

{mail($to,$subject,$message); 
header("Location:/About.html");} 

Эти файлы используются в условных операторах, которые вы, вероятно, хотели использовать.

т.е .:

if(mail($to,$subject,$message,$headers)){ 
    header("Location:/About.html"); 
    exit; 
    } 

else{ 
    echo "Mail failed. Check your logs"; 
    } 

Sidenote: Это всегда лучше, чтобы добавить exit; после заголовка. В противном случае, и если у вас будет следующий код, ваш код может продолжить выполнение.

mail($to,$subject,$message); 
    header("Location:/About.html"); 
    exit; 

Использовав сообщения об ошибках, будет сигнализировали немало уведомлений.

Добавьте error reporting в начало файла, в котором будут найдены ошибки.

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

// rest of your code 

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


Заключительные замечания.

Лучше всего проверять свои входы на пустоты.

т.е .: if(!empty($var)){...}

0

Вы можете попробовать удалить value="" Также удалите все точки с запятой после переменных в строке сообщения e .г. изменить $name; только $name

Убедитесь, что имя поля называется так же, как POST переменной вы собираете (в настоящее время название, кажется, отправляется, но скрипт ищет имя1).

Возможно, вы указали значения переменных из вашего сценария по мере их поступления?

На большинстве серверов вам нужно будет сделать «из» домена на вашем сервере и добавить «ответ» для адреса электронной почты из формы. Не забудьте очистить входные данные, чтобы избежать атаки сценария.

+0

Пожалуйста, не используйте ответы, чтобы задать вопросы о разъяснении. [Это не сложно заработать достаточно, чтобы комментировать.] (Http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can-i- do-вместо этого) –

+0

ваши изменения приближаются, но вы что-то пропустили. Несколько на самом деле. –