2013-05-27 137 views
0

我有問題看到預編寫模板的問題。 有3個文件如下,驗證不適用於PHP

/contact.php 
/forms/contact.php 
/js/forms.js 

所以,當訪問者填補了根目錄下的contact.php其重定向到/forms/contact.php和forms.js檢查的形式,如果沒有問題發送電子郵件。

這裏是我的/contact.php包括形式,

<form id="contactform" method="post" action="forms/contact.php"> 
<div class="divide10"></div> 
<input id="name" name="name" value="Your Name" type="text" class="prepared-input"> 
<div class="divide15"></div> 
<input id="email" name="email" value="Your Email" type="text" class="prepared-input"> 
<div class="divide15"></div> 
<textarea id="contactmessage" name="message" rows="3" class="prepared-input">Your Message</textarea> 
<div class="divide15"></div> 
<input type="submit" id="From_Comment_Go" value="Send Message " class="btn maincolor small"> 
<span class="errormessage hiddenatstart">Error! Please correct marked fields.</span> 
<span class="successmessage hiddenatstart">Message send successfully!</span> 
<span class="sendingmessage hiddenatstart">Sending...</span> 
</form> 

這裏是我的/forms/contact.php

<?php 
$to = '[email protected]'; 


//Language Options 
$contact_labelmailhead = 'Contact Form Email'; 
$contact_labelmailsubject = 'Contact Form Email from'; 
$contact_labelname = 'Name'; 
$contact_labelemail = 'Email'; 
$contact_labelmessage = 'Message'; 

$name = trim($_POST['name']); 
$email = trim($_POST['email']); 
$message = str_replace(chr(10), "<br>", $_POST['message']); 

$body = "<html><head><title>$contact_labelmailhead</title></head><body><br>"; 
$body .= "$contact_labelname: <b>" . $name . "</b><br>"; 
$body .= "$contact_labelemail <b>" . $email . "</b><br>"; 
$body .= "$contact_labelmessage:<br><hr><br><b>" . $message . "</b><br>"; 
$body .= "<br></body></html>"; 

$subject = $contact_labelmailsubject.' ' . $name; 
$header = "From: $email\n" . "MIME-Version: 1.0\n" . "Content-type: text/html; charset=utf-8\n"; 

mail($to, $subject, $body, $header); 


?> 

,最後forms.js在這裏,

jQuery(document).ready(function() { 
    /* Contact Form */ 
    if(jQuery('#contactform').length != 0){ 
     addForm('#contactform'); 
    } 

    /* Quick Contact */ 
    if(jQuery('#quickcontact').length != 0){ 
     addForm('#quickcontact'); 
    } 

    /* Blog Comments */ 
    if(jQuery('#replyform').length != 0){ 
     addForm('#replyform'); 
    } 
}); 

    function addForm(formtype) { 
    var formid = jQuery(formtype); 
    var emailsend = false; 

    formid.find("input[type=submit]").click(sendemail); 


    function validator() { 

     var emailcheck = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; 
     var othercheck = /.{4}/; 
     var noerror = true; 

     formid.find(".requiredfield").each(function() { 

      var fieldname = jQuery(this).attr('name'); 
      var value = jQuery(this).val(); 
      if(value == "Name *" || value == "Email *" || value == "Message *"){ 
       value = ""; 
      } 

      if(fieldname == "email"){ 
       if (!emailcheck.test(value)) { 
        jQuery(this).addClass("formerror"); 
        noerror = false; 
       } else { 
        jQuery(this).removeClass("formerror"); 
       } 
      }else{ 
       if (!othercheck.test(value)) { 
        jQuery(this).addClass("formerror"); 
        noerror = false; 
       } else { 
        jQuery(this).removeClass("formerror"); 
       } 
      } 
     }) 

     if(!noerror){ 
      formid.find(".errormessage").fadeIn(); 
     } 

     return noerror; 
    } 

    function resetform() { 
     formid.find("input").each(function() { 
      if(!jQuery(this).hasClass("button")) jQuery(this).val(""); 
     }) 
     formid.find("textarea").val(""); 
     emailsend = false; 
    } 


    function sendemail() { 
     formid.find(".successmessage").hide(); 
     var phpfile = ""; 
     if(formtype=="#contactform"){ 
      phpfile = "forms/contact.php"; 
     }else if(formtype.lastIndexOf("c_")){ 
      phpfile = "forms/quickcontact.php"; 
     }else{ 
      phpfile = ""; 
     } 
     if (validator()) { 
      if(!emailsend){ 
       emailsend = true; 
       formid.find(".errormessage").hide(); 
       formid.find(".sendingmessage").show(); 
       jQuery.post(phpfile, formid.serialize(), function() { 
        formid.find(".sendingmessage").hide(); 
        formid.find(".successmessage").fadeIn(); 
        if(!formtype.lastIndexOf("c_"))resetform(); 
       }); 
      } 
     } 
     return false 
    } 

}

因此,leav表單發送值:S並不檢查任何內容。我應該試着解決這個問題還是嘗試去實現其他的東西?我不是那jQuery,並且不能說驗證腳本是否有問題。

一些建議將是巨大的! 謝謝!

+0

你只在客戶端驗證數據(使用JavaScript),你應該'ALWAYS'在服務器上進行驗證,我可以簡單地在我的瀏覽器禁用javascript,並通過什麼到你的服務器(那我應該通過驗證停止) – Anil

回答

0

上有.js文件的語法錯誤,這可能會被叫停一些js代碼。首先,修復JS這些錯誤是這樣的:

formid.find("input").each(function() 
{ 
    if(!jQuery(this).hasClass("button")) jQuery(this).val(""); 
})//this is missing a ; 

之後,像凱文·施密德說,你可以適當考慮在POST方法..

-1

的驗證功能檢查每個輸入與".requiredfield"類。 示例代碼:

formid.find(".requiredfield").each(function() {