2015-05-09 5 views
0

Я новичок в dev, просто изучая его, когда мы говорим. Мне еще предстоит изучить PHP и JavaScript/JQuery, поэтому у меня возникают проблемы с моей контактной формой на моем сайте.Контактная форма и PHP

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

<!-- FORM --> 
    <form id="form" form role="form" action="contact_form.php" method="post"> 
    <p id="returnmessage"></p> 
    <br/> 
     <label>Name: <span>*</span></label> 
    <br/> 
    <input type="text" id="name" placeholder="Name"/><br/> 
    <br/> 
    <label>Email: <span>*</span></label> 
    <br/> 
    <input type="text" id="email" placeholder="Email"/><br/> 

    <br/>  
          <textarea id="message" placeholder="Message......."></textarea><br/> 
    <br/> 
    <input type="button" id="submit" value="Send"/> 
          <br/> 
      </form> 

PHP

<?php 
//Fetching Values from URL 
$name = $_POST['name1']; 
$email = $_POST['email1']; 
$message = $_POST['message1']; 
$contact = $_POST['contact1']; 
//sanitizing email 
$email = filter_var($email, FILTER_SANITIZE_EMAIL); 
//After sanitization Validation is performed 
if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
if (!preg_match("/^[0-9]{10}$/", $contact)) { 
echo "<span>* Please Fill Valid Contact No. *</span>"; 
} else { 
$subject = $name; 
// To send HTML mail, the Content-type header must be set 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From:' . $email. "\r\n"; // Sender's Email 
$headers .= 'Cc:' . $email. "\r\n"; // Carbon copy to Sender 
$template = '<div style="padding:50px; color:white;">Hello ' . $name .  ',<br/>' 
. '<br/>Thank you...! For Contacting Us.<br/><br/>' 
. 'Name:' . $name . '<br/>' 
. 'Email:' . $email . '<br/>' 
. 'Contact No:' . $contact . '<br/>' 
. 'Message:' . $message . '<br/><br/>' 
. 'This is a Contact Confirmation mail.' 
. '<br/>' 
. 'We Will contact You as soon as possible .</div>'; 
$sendmessage = "<div style=\"background-color:#7E7E7E; color:white;\">"  . $template . "</div>"; 
// message lines should not exceed 70 characters (PHP rule), so wrap it 
$sendmessage = wordwrap($sendmessage, 70); 

// Send mail by PHP Mail Function 
mail([email protected], $subject, $sendmessage, $headers); 
echo "Your Query has been received, We will contact you soon."; 
} 
} else { 
echo "<span>* invalid email *</span>"; 
} 

JAVASCRIPT

$(document).ready(function(){ 
$("#submit").click(function(){ 
var name = $("#name").val(); 
var email = $("#email").val(); 
var message = $("#message").val(); 
var contact = $("#contact").val(); 

$("#returnmessage").empty(); //To empty previous error/success message. 
//checking for blank fields 
if(name==''||email==''||contact=='') 
{ 
alert("Please Fill Required Fields"); 
} 
else{ 
// Returns successful data submission message when the entered information is stored in database. 
$.post("contact_form.php",{ name1: name, email1: email, message1:message, contact1: contact}, 
function(data) { 
      $("#returnmessage").append(data);//Append returned message to message paragraph 
       if(data=="Your Query has been received, We will contact you soon."){ 
        $("#form")[0].reset();//To reset form fields on success 
       } 
     }); 
    } 

}); 
}); 
+0

Добавить отчет об ошибках в начало вашего файла (ов) сразу после открытия PHP-тега например '

+0

'$ sendmessage' вы не конкатенируете, и учитывается только последняя переменная. Вы также должны обратиться к руководству по почте http://php.net/manual/en/function.mail.php - ваш первый параметр неверен. Вам также необходимо убедиться, что все входы заполнены и не оставлены пустыми. Ваша тема как имя может выйти из строя, если она не заполнена. –

ответ

2

Ваша первая проблема заключается в том, что вы не назовете какую-либо из ваших переменных из вашей html-формы. PHP нуждается в них, чтобы иметь возможность обрабатывать информацию. Например:

<input type="text" id="name" placeholder="Name"/> 

Нужно иметь поле имени (а не только идентификатор, тип и местозаполнитель). Вот как это должно выглядеть, чтобы соответствовать сообщению переменные в PHP скрипт:

<input type="text" id="name" name="name1" placeholder="Name"/> 

Вы должны сделать это с остальной частью HTML входов, а также. Удостоверьтесь, что они соответствуют переменной в POST в php-форме (это тот, который называется скриптом PHP $_POST['']). Это решит вашу первую проблему.

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

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

Примечание, это также, вероятно, хорошая идея, чтобы сохранить адрес электронной почты в переменной, а не жесткого кодирования его.

Что касается переменной sendmessage, вам нужно будет объединить переменные, подобные этому (как указано выше в комментариях), в противном случае вторая переменная $sendmessage перезапишет вторую. (Обратите внимание на . непосредственно перед = во втором ряду)

$sendmessage = "<div style=\"background-color:#7E7E7E; color:white;\">"  . $template . "</div>"; 

$sendmessage .= wordwrap($sendmessage, 70); 

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

Я рекомендую также прочитать некоторые уроки (http://w3schools.com - это очень хорошо для обучения), но это то, что вы делаете, - это хорошее место для начала. Если у вас возникнут проблемы, попробуйте отключить код до минимального минимума (например, удалите сегменты HTML из электронной почты, просто отправьте его как обычный текст, чтобы убедиться, что он работает, и после этого верните его обратно, удалите регулярное выражение проверьте и javascript, пока у вас не будет формы, а затем понемногу добавьте части. Таким образом вы сможете лучше понять, как работают произведения.

+0

, в коде OP есть немало проблем, которые я рассмотрел по их вопросу. Некоторые из них добавят к его отказу. Они не рассматривались ни в одном из ответов, данных кем-либо. –

+0

Очень хорошие моменты @ Фред-ии (как обычно). Я немного почистил его и добавил некоторые объяснения. – nomistic

+1

Право, * ура * –

0

Изменить

$name = $_POST['name1']; $email = $_POST['email1']; $message = $_POST['message1']; $contact = $_POST['contact1'];

в

$name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $contact = $_POST['contact'];

И дать имя атрибута (имя = "имя", имя = "электронная почта" ..) для каждого входа.

Это будет работа.

+2

У нее нет причин менять оба. Она может просто создать атрибуты имени в форме, чтобы соответствовать тому, что она уже имеет в переменных post post PHP – nomistic

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