2016-10-13 169 views
1

以下表單按預期工作,包括蜜罐,但如果有人在完成表單之前點擊瀏覽器中的刷新,它會嘗試重新提交。我嘗試過會話,但它不起作用。有誰知道我可以如何將頁面重定向回contact.php或結束會話,因此它不會在瀏覽器刷新時重新提交? (我花了2天時間尋找答案)。由於php簡單聯繫表單重新提交刷新瀏覽器

代碼:

<!--form--> 
<?php 
//fields 
    $link_address = 'contact.php'; // page to redirect to home page 
    $honeypot = ''; 
    $error  = ''; 
    $name  = 'Name (required)'; 
    $email  = 'Email (required)'; 
    $comments = 'Message (required)'; 

    if(isset($_POST['contactus'])) { 

    $honeypot = $_POST['honeypot']; 
    $name  = $_POST['name']; 
    $email  = $_POST['email']; 
    $comments = $_POST['comments']; 

// honeypot 
if($honeypot) 
    exit(1); 


//error messages 
    if(trim($name) == 'Name (required)') { 
     $error = '<div class="error_message">Please enter your Name</div>'; 
    } else if(trim($name) == '') { 
     $error = '<div class="error_message">Please enter your Name</div>'; 

    } else if(trim($email) == 'Email (required)') { 
     $error = '<div class="error_message">Please enter an email address</div>'; 
    } else if(trim($email) == '') { 
     $error = '<div class="error_message">Please enter an email address</div>'; 

    } else if(!isEmail($email)) { 
     $error = '<div class="error_message">Please enter a valid email address</div>'; 

    } else if(trim($comments) == 'Message (required)') { 
     $error = '<div class="error_message">Please enter a Message</div>'; 
    } else if(trim($comments) == '') { 
     $error = '<div class="error_message">Please enter a Message</div>'; 

    } 
    if($error == '') { 
     if(get_magic_quotes_gpc()) { 
      $comments = stripslashes($comments); 
    } 

//email address 
    $address = "[email protected]"; 
//email message  
    $e_subject = 'Web Message from: ' . $name . '.'; 
    $e_body = "From: $name\nEmail: $email \r\n\nMessage:\n$comments\n\n\n"; 

    $msg = $e_body . $e_content . $e_reply; 
    if(mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")) 
    { 
//success html page response 
    echo "<div id='success_page'>"; 
    echo "<div id='thanks'>"; 
    echo "<h1>Message Sent Successfully.</h1>"; 
    echo "<p id='cprint1'>Thank you. Your message was sent to us. </br>We will be in touch shortly.</p>"; 
    echo "<p id='print'><a href='javascript:window.print()'>Print your Message</a></p>"; 
    echo "<p id='cclose'><a href='$link_address'>Close this Message</a></p>"; 
    echo "</div>"; 
    echo "<div id='thanks2'>"; 
    echo "<div id='titlemsg'>Below is your message</div>"; 
    echo "<p><span>Name:</span> $name</p>"; 
    echo "<p><span>Email:</span> $email</p>"; 
    echo "<p><span>Message:</span>$comments</p>"; 
    echo "</div>"; 
    echo "</div>"; 
    } else echo "Error. Mail not sent"; 
    } 
} 
    if(!isset($_POST['contactus']) || $error != '') // Do not edit. 
    { 

?> 
<!--form--> 



<form method="post" action="" id="myform" autocomplete="off"> 
<div id="error"><?php echo $error; ?></div> 

<input name="name" type="text" id="name" class="form1" 
value="<?php echo $name; ?>" onfocus="if(this.value == 'Name (required)') {this.value = ''; }" onblur="if(this.value == '') { this.value = 'Name (required)'; }" value="Name (required)" /> 

<input name="email" type="text" id="email" class="form1" 
value="<?php echo $email; ?>" onfocus="if(this.value == 'Email (required)') { this.value = ''; }" onblur="if(this.value == '') { this.value = 'Email (required)'; }" value="Email (required)" /> 

<input name="honeypot" type="text" id="honeypot" class="form2"  value="<?php echo $honeypot; ?>" /> 

<textarea name="comments" cols="40" rows="3" id="comments" 
value="<?php echo $comments; ?>" onfocus="if(this.value == 'Message (required)') { this.value = ''; }" onblur="if(this.value == '') { this.value = 'Message (required)'; }" value="Message (required)"><?php echo $comments; ?></textarea> 

<input name="contactus" type="submit" class="submit" id="contactus"  value="Contact us" /> 


</form> 
<?php } 
function isEmail($email) { // Email address verification, do not edit. 
return(preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,12})$/",$email)); 
} 
?> 
+0

您可以使用重定向透過形式'頭之後:;'http://php.net/manual( '位置' $的newURL。) /en/function.header.php – Karthi

回答

1

您可以保存在會話中執行的消息上發送的郵件全成。然後刷新頁面並檢查是否存在會話,然後顯示消息並重置會話。

使用表單數據後,只是將其重定向到同一頁面。 例 -

header('location:yourpage.php'); 

,你也可以不設置$ _ POST之後其插入到數據庫。

unset($_POST); 
0

您可以使用JavaScript重定向:

<script> 
    window.location.href = 'test.php'; 
</script>