2013-04-23 3 views
0

У меня есть АЯКС инициативы контактной формы на моем сайте связаны hereпроверка ошибок на AJAX контактной форме

У меня 2 проблемы с ним.

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

Во-вторых, я понятия не имею, как добавить дополнительные поля в форму. Например, добавив Company Name, чтобы пользователи могли вводить и отправлять по электронной почте. Я попытался добавить значения, такие как $company и следующий код, но я получаю эту ошибку, что не могу передать это множество переменных в $mail:/Попытка узнать через пробную версию и ошибку, любая помощь приветствуется!

вот мой код:

<?php 

include dirname(dirname(__FILE__)).'/mail.php'; 

error_reporting (E_ALL^E_NOTICE); 

$post = (!empty($_POST)) ? true : false; 

if($post) 
{ 
    include 'email_validation.php'; 

    $name = stripslashes($_POST['name']); 
    $email = trim($_POST['email']); 
    $subject = 'Contact Form: Inquiry from corporate website'; 
    $message = stripslashes($_POST['message']); 

    $error = ''; 

    // Check name 

    if(!$name || strlen($name) < 1) 
    { 
    $error .= 'Please enter your name.<br />'; 
    } 

    // Check email 

    if(!$email) 
    { 
    $error .= 'Please enter an e-mail address.<br />'; 
    } 

    if($email && !ValidateEmail($email)) 
    { 
    $error .= 'Please enter a valid e-mail address.<br />'; 
    } 

    // Check message (length) 

    if(!$message || strlen($message) < 10) 
    { 
    $error .= "Please enter your message. It should have at least 10 characters.<br />"; 
    } 


    if(!$error) 
    { 
    $mail = mail(CONTACT_FORM, $subject, $message, 
    "From: ".$name." <".$email.">\r\n" 
    ."Reply-To: ".$email."\r\n" 
    ."X-Mailer: PHP/" . phpversion()); 


    if($mail) 
    { 
     echo 'OK'; 
    } 

    } 
    else 
    { 
    echo '<div class="notification_error">'.$error.'</div>'; 
    } 

} 
?> 

Вот мой HTML форма подключения к PHP:

<form id="contactForm" action=""> 
    <input type="text" name="name" value="Name *" title="Name *" /> 
    <input type="text" name="email" value="Email *" title="Email *" /> 

    <textarea name="message" id="message" title="Message *">Message *</textarea> 

    <div class="clear"></div> 

    <input type="reset" class="btn btn_clear" value="Clear form" /> 
    <input type="submit" class="btn btn_blue btn_send" value="Send message!" /> 
    <div class="clear"></div> 
</form> 
+1

лучше вашего написания кода - опускать '>' в конце PHP-файлы только?. Это причина множества плохих вещей, которые лучше описаны в [еще одной публикации SO] (http://stackoverflow.com/questions/4410704/why-would-one-omit-the-close-tag). – hexblot

+0

Неплохая привычка задавать сразу два вопроса. Удалите другой вопрос и создайте для него новый пост. – Jonast92

+0

хорошо, любая идея о том, что я уже опубликовал на этой странице? havent много помог, но ненавижу, как я задаю вопрос и как я отформатирую свой текст:/ – Tetzuro

ответ

0

Об валидацию имени:

Не делайте

if(!$name || strlen($name) < 1) 
{ 
    $error .= 'Please enter your name.<br />'; 
} 

Do thi с:

if((!(isset($_POST['name'])) || strlen($name) < 1) 
{ 
    $error .= 'Please enter your name.<br />'; 
} 

strlen не будет делать много, если $ name не определено. Но вы должны это сделать, прежде чем пытаться сделать strlen из опубликованного имени.

Кроме того, вы не можете добавить

$company 

в функцию

$mail 

, потому что вы, скорее всего, использовать его в качестве аргумента в функции почты, вместо добавления его в $ переменной сообщения.

Также вы должны отступать от своего кода, это ужасно читать.

+0

Я использую CONTACT_FORM, потому что у меня есть файл mail.php, который включен – Tetzuro

+0

Покажите нам, где определяется $ to. – Jonast92

+0

ok, я просто разместил его – Tetzuro

0

это то, что кладется в mail.php, вот почему существует CONTACT_FORM

<?php 
    // Where will you get the forms' results? 
     define("CONTACT_FORM", '[email protected]'); 
?> 
Смежные вопросы