2012-03-15 3 views
0

Контактная форма не работаетПочему контактная форма не работает на моем сайте?

Вот код, который используется на странице.

Jquery в Index.html

<!--contact form --> 

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#send_message').click(function(e){ 

     //stop the form from being submitted 
     e.preventDefault(); 

     /* declare the variables, var error is the variable that we use on the end 
     to determine if there was an error or not */ 
     var error = false; 
     var name = $('#name').val(); 
     var email = $('#email').val(); 
     var message = $('#message').val(); 

     /* in the next section we do the checking by using VARIABLE.length 
     where VARIABLE is the variable we are checking (like name, email), 
     length is a javascript function to get the number of characters. 
     And as you can see if the num of characters is 0 we set the error 
     variable to true and show the name_error div with the fadeIn effect. 
     if it's not 0 then we fadeOut the div(that's if the div is shown and 
     the error is fixed it fadesOut. 

     The only difference from these checks is the email checking, we have 
     email.indexOf('@') which checks if there is @ in the email input field. 
     This javascript function will return -1 if no occurence have been found.*/ 
     if(name.length == 0){ 
      var error = true; 
      $('#name_error').fadeIn(500); 
     }else{ 
      $('#name_error').fadeOut(500); 
     } 
     if(email.length == 0 || email.indexOf('@') == '-1'){ 
      var error = true; 
      $('#email_error').fadeIn(500); 
     }else{ 
      $('#email_error').fadeOut(500); 
     } 

     if(message.length == 0){ 
      var error = true; 
      $('#message_error').fadeIn(500); 
     }else{ 
      $('#message_error').fadeOut(500); 
     } 

     //now when the validation is done we check if the error variable is false (no errors) 
     if(error == false){ 
      //disable the submit button to avoid spamming 
      //and change the button text to Sending... 
      $('#send_message').attr({'disabled' : 'true', 'value' : 'Sending...' }); 

      /* using the jquery's post(ajax) function and a lifesaver 
      function serialize() which gets all the data from the form 
      we submit it to send_email.php */ 
      $.post("send_email.php", $("#contact_form").serialize(),function(result){ 
       //and after the ajax request ends we check the text returned 
       if(result == 'sent'){ 
        //if the mail is sent remove the submit paragraph 
        $('#cf_submit_p').remove(); 
        //and show the mail success div with fadeIn 
        $('#mail_success').fadeIn(500); 
       }else{ 
        //show the mail failed div 
        $('#mail_fail').fadeIn(500); 
        //reenable the submit button by removing attribute disabled and change the text back to Send The Message 
        $('#send_message').removeAttr('disabled').attr('value', 'Send The Message'); 
       } 
      }); 
     } 
    });  
}); 
</script> 

Вот HTML код для контейнера

Контакт-формы в HTML @ index.html

<!--contact form --> 
<div id="contact-form"> 
<div id="contact_form_holder"> 
<form action="index.php" method="post" id="contact_form"> 

<p> 
Your Name: 
    <input name="name" class="field" id="name" type="text"> 
</p><div id="name_error" class="error"><img src="web_files/error.png">&nbsp;Please enter your name</div> 
<p></p> 

<p> 
Your Email: 
</p><div><input name="email" class="field" id="email" type="text"> 
<div id="email_error" class="error"><img src="web_files/error.png">&nbsp;OOps!! i can't get back to you in this mail id</div> 
</div> 
<p></p> 

<p> 
The Message: 
</p><div> 
<textarea name="message" class="field" id="message"></textarea> 
<div id="message_error" class="error"><img src="web_files/error.png"> Forgot why you came here?</div></div> 

<p></p> 

<div id="mail_success" class="success"><img src="web_files/success.png"> Thank you. The mailman is on his way.</div> 
<div id="mail_fail" class="error"><img src="web_files/error.png"> Sorry, don't know what happened. Try later.</div> 
<p id="cf_submit_p"> 
<!--<input type='submit' id='send_message' value='Send it to me' class="submit"> --> 
<input id="send_message" value="Send The Message" class="submit" type="submit"> 
</p> 


</form> 
</div> 
</div> 

<!--contact form --> 

И наконец вот Код PHP как

send_email.php

//we need to get our variables first 

$email_to = '[email protected]'<script type="text/javascript"> 
/* <![CDATA[ */ 
(function(){try{var s,a,i,j,r,c,l=document.getElementById("__cf_email__");  a=l.className;if(a){s='';r=parseInt(a.substr(0,2),16);for(j=2;a.length-j;j+=2) {c=parseInt(a.substr(j,2),16)^r;s+=String.fromCharCode(c);}s=document.createTextNode(s); l.parentNode.replaceChild(s,l);}}catch(e){}})(); 
/* ]]> */ 
</script>';  
//the address to which the email will be sent 
    $name  = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 

    /*the $header variable is for the additional headers in the mail function, 
we are asigning 2 values, first one is FROM and the second one is REPLY-TO. 
That way when we want to reply the email gmail(or yahoo or hotmail...) will know 
who are we replying to. */ 
$headers = "From: $email\r\n"; 
$headers .= "Reply-To: $email\r\n"; 

if(mail($email_to, $subject, $message, $headers)){ 
    echo 'sent'; // we are sending this text to the ajax request telling it that the mail is sent.. 
}else{ 
    echo 'failed';// ... or this one to tell it that it wasn't sent 
    } 
+6

Что в мире это? Что делает JS в PHP? – Stewie

+0

нет! Я попробовал reoving js, он, похоже, не работал – Beginner

ответ

1

Ваша ошибка в вашей первой линии в вашем PHP-коде:

$email_to = '[email protected]'<script type="text/javascript"> 

Ваша строка заканчивается после электронной почты. Исправьте его до

$email_to = '[email protected]'; 

и все должно быть в порядке.

Также, что делает JavaScript внутри PHP? Удалите его или убедитесь, что он его эхо, или поместите его за пределы ваших PHP-тегов.

+0

NOt работает, хотя :( – Beginner

0

1) Измените первую строку кода PHP в

$email_to = '[email protected]';

2) Удалите JavaScript из файла PHP.

Если все еще не работает, измените все $_POST на $_GET и введите значения переменных самостоятельно. Затем запустите код и скажите мне результат.

EDIT:

Я нашел свою ошибку. Вы не открыли свой php-файл правильно. http://www.justyesh.in/send_email.php

Начинаешь PHP с <?php и закрыть его с ?>

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