2011-03-08 5 views
-1

클라이언트 및 서버 측 유효성 검사 시도 2 ​​개의 파일이 있습니다. 클라이언트 쪽 괜찮아요, 그것은 theres 서버 쪽과 오류가 보인다, 전혀 보내지 않습니다.이 연락처 양식이 작동하지 않는 이유는 무엇입니까?

감사합니다.

form.php 다음 eregi 정규식이 실제로 (eregi가되지 않습니다 작동하는 경우

<html> 
<head> 
<style type="text/css"> 
label.error{color:red; font-weight:bold;} 
</style> 
<script type="text/javascript" src="jquery.js"> </script> 
<script type="text/javascript" src="validation.js"> </script> 
<script type="text/javascript"> 
$.validator.setDefaults({ 
    submitHandler: function() { alert("submitted!"); } 
}); 

$().ready(function() { 
    // validate the comment form when it is submitted 
    $("#commentForm").validate(); 

    // validate signup form on keyup and submit 
    $("#signupForm").validate({ 
     rules: { 
      firstname: "required", 
      lastname: "required", 
      username: { 
       required: true, 
       minlength: 2 
      }, 
      password: { 
       required: true, 
       minlength: 5 
      }, 
      confirm_password: { 
       required: true, 
       minlength: 5, 
       equalTo: "#password" 
      }, 
      email: { 
       required: true, 
       email: true 
      }, 
      topic: { 
       required: "#newsletter:checked", 
       minlength: 2 
      }, 
      agree: "required" 
     }, 
     messages: { 
      firstname: "Please enter your firstname", 
      lastname: "Please enter your lastname", 
      username: { 
       required: "Please enter a username", 
       minlength: "Your username must consist of at least 2 characters" 
      }, 
      password: { 
       required: "Please provide a password", 
       minlength: "Your password must be at least 5 characters long" 
      }, 
      confirm_password: { 
       required: "Please provide a password", 
       minlength: "Your password must be at least 5 characters long", 
       equalTo: "Please enter the same password as above" 
      }, 
      email: "Please enter a valid email address", 
      agree: "Please accept our policy" 
     } 
    }); 

    // propose username by combining first- and lastname 
    $("#username").focus(function() { 
     var firstname = $("#firstname").val(); 
     var lastname = $("#lastname").val(); 
     if(firstname && lastname && !this.value) { 
      this.value = firstname + "." + lastname; 
     } 
    }); 

    //code to hide topic selection, disable for demo 
    var newsletter = $("#newsletter"); 
    // newsletter topics are optional, hide at first 
    var inital = newsletter.is(":checked"); 
    var topics = $("#newsletter_topics")[inital ? "removeClass" : "addClass"]("gray"); 
    var topicInputs = topics.find("input").attr("disabled", !inital); 
    // show when newsletter is checked 
    newsletter.click(function() { 
     topics[this.checked ? "removeClass" : "addClass"]("gray"); 
     topicInputs.attr("disabled", !this.checked); 
    }); 
}); 
</script> 

</head> 

<body> 
<form class="cmxform" id="commentForm" method="post" action="f_validate.php" > 
    <fieldset> 
     <legend>Please provide your name provide required fields below.</legend> 
     <p> 
      <label for="cname">* Name</label> 
      <input id="cname" name="name" class="required" minlength="2" /> 
     <p> 
      <label for="cemail">* Email</label> 
      <input id="cemail" name="email" class="required email" /> 
     </p> 
     <p> 
      <label for="curl">URL</label> 
      <input id="curl" name="url" class="url" value="" /> 
     </p> 
     <p> 
      <label for="ccomment">* Comment</label> 
      <textarea id="ccomment" name="comment" class="required"></textarea> 
     </p> 
     <p> 
      <input class="submit" type="submit" value="Submit"/> 
     </p> 
    </fieldset> 
</form> 

</body> 

</html> 

f_validate.php

<?php 
$errors = ''; 
$myemail = '[email protected]'; 
if(empty($_POST['name']) || 
    empty($_POST['email']) || 
    empty($_POST['comment'])) 
{ 
    $errors .= "\n Error: all fields are required"; 
} 

$name = $_POST['name']; 
$email_address = $_POST['email']; 
$comment = $_POST['comment']; 

if (!eregi(
"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", 
$email_address)) 
{ 
    $errors .= "\n Error: Invalid email address"; 
} 

if(empty($errors)) 
{ 
    $to = $myemail; 
    $email_subject = "Contact form submission: $name"; 
    $email_body = "You have received a new message. ". 
    " Here are the details:\n Name: $name \n Email: $email_address \n Message \n $comment"; 

    $headers = "From: $myemail"; 
    $headers .= "Reply-To: $email_address"; 

    mail($to,$email_subject,$email_body,$headers); 
    //redirect to the 'thank you' page 
    header('Location: http://www.josephdickinson.com'); 
} 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <title>Contact form handler</title> 
</head> 

<body> 
<!-- This page is displayed only if there is some error --> 
<?php 
echo nl2br($errors); 
?> 


</body> 
</html> 
+0

PHP가 메일 서버에 올바르게 구성되어 있습니까? 그것은 작동 테스트를 거쳤습니까? '$ headers = "From : $ myemail";'다음에 \ r \ n이 필요합니다. 그래서'$ headers = "가됩니다. From : $ myemail \ r \ n"; –

+0

대신'\ r \ n' 또는'\ n'을 사용하여 PHP_EOL을 안전하게 사용하십시오. 만약 창 서버라면'\ n'은 보내지 않을 것입니다. – kjy112

+0

우리는 무엇이 잘못되었는지 추측하기를 원하십니까? 또는 정확한 오류를 기준으로 정확한 답을 주시겠습니까? – Jakub

답변

1
  1. 확인, 그건 그렇고, 당신은 전환해야 대신에 preg_match하는 방법
  2. 후퇴 확인 n mail() 함수의 값 - 로컬 SMTP 서버에 전자 메일을 전달하는 데 문제가 있으면 메일은 부울 FALSE를 반환합니다.
  3. SMTP 서버의 로그를 확인하십시오. 메일이 대기열에 걸려 있거나 수신 서버에서 거부되거나 스팸 폴더에 덤프 된 경우 등 ... mail()이 true를 리턴한다고해서 실제로 이메일이 전송 된 것은 아닙니다. 수신자에게 배달됩니다.
관련 문제