2014-10-08 3 views
0

다음 코드에는 문의 양식이 있으며 해당 양식에 전자 메일 유효성 검사 스크립트가 있습니다. 유효성 검사 결과 페이지를 다시로드하지 않고 확인이라는 오류 메시지를 div에 표시하려고합니다. 또한 이메일이 유효하면 메일이 전송되며 감사 메시지가 동일한 div 확인에 표시되기를 바랍니다. 문제는 페이지를 다시로드하지 못하게하고 확인 메시지에 오류 메시지 또는 감사 메시지가 표시되도록하려면 어떻게해야합니까?페이지를 다시로드하지 않고 div에 텍스트 표시

<html> 
<body> 
<?php 
function spamcheck($field) { 
    // Sanitize e-mail address 
    $field=filter_var($field, FILTER_SANITIZE_EMAIL); 
    // Validate e-mail address 
    if(filter_var($field, FILTER_VALIDATE_EMAIL)) { 
    return TRUE; 
    } else { 
    return FALSE; 
    } 
} 
?> 

<?php 
if (!isset($_POST["submit"])) { 
    ?> 
    <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>"> 
    From: <input type="text" name="from"><br> 
    Subject: <input type="text" name="subject"><br> 
    Message: <textarea rows="10" cols="40" name="message"></textarea><br> 
    <input type="submit" name="submit" value="Submit Feedback"><br> 
    <div id="confirmation" style="display:none" align="center"></div> 
    </form> 
    <?php 
} else { // the user has submitted the form 
    // Check if the "from" input field is filled out 
    if (isset($_POST["from"])) { 
    // Check if "from" email address is valid 
    $mailcheck = spamcheck($_POST["from"]); 
    if ($mailcheck==FALSE) { 
     echo" 
     <script> 
     document.getElementById('confirmation').text ='invalid email'; 
     </script>"; 
    } else { 
     $from = $_POST["from"]; // sender 
     $subject = $_POST["subject"]; 
     $message = $_POST["message"]; 
     // message lines should not exceed 70 characters (PHP rule), so wrap it 
     $message = wordwrap($message, 70); 
     // send mail 
     mail("[email protected]",$subject,$message,"From: $from\n"); 
     echo" 
     <script> 
     document.getElementById('confirmation').text ='Thank you'; 
     </script>"; 
    } 
    } 
} 
?> 
</body> 
</html> 

감사

+2

당신이 양식을 제출해야합니다 당신이 아약스 – mpacheco

+0

을 사용하여 원하는 할 수 AJAX를 사용하면 응답을 받고 적절한 절대 위치 div를 표시합니다 (오류 메시지, 감사합니다.) – Sharky

+0

'document.getElementById ('확인'). innerHTML = '

test
'; ' –

답변

1
<input type="text" name="from" id ="from"> 

전화 예 :

var request = $.ajax({ 
    url: "file.php", 
    type: "POST", 
    data: { email : $('#from').val() } 
}); 

request.done(function(msg) { 
    //handle HTML 
}); 

request.fail(function(jqXHR, textStatus) { 
    //Handle problem at server side 
}); 

PHP 측면

<?php 

$email = $_POST["email"] 

function spamcheck($field) { 
    // Sanitize e-mail address 
    $field=filter_var($field, FILTER_SANITIZE_EMAIL); 
    // Validate e-mail address 
    if(filter_var($field, FILTER_VALIDATE_EMAIL)) { 
    return 'valid'; 
    } else { 
    return 'no_valid'; 
    } 
} 

echo spamcheck($email); 
+0

참고 :이 코드는 시험해 보지 않았습니다. 단지 지침 일뿐입니다. – mpacheco

0

당신이 할 수있는 방법은 없습니다와 단지 PHP 그.

당신이보고있는 것은 일반적으로 AJAX로 알려져 있으며 클라이언트 측 언어 (자바 스크립트)를 사용합니다. 매우 일반적이며 인터넷에서 널리 사용됩니다. google에서 ajax을 검색하면 많은 예제와 제작 준비 스크립트를 찾을 수 있습니다. 여기

더 많은 정보 : http://www.w3schools.com/ajax/

관련 문제