PHP在表单提交后redirect到另一个页面

我已阅读所有关于将标题插入到一个PHP表单文件,以redirect到另一个URL后提交表单 – 但我不知道如何做到这一点。 以下是我的代码。 你能告诉我在哪里把标题/redirect,以便信息得到电子邮件,然后用户转到另一个HTML页面?

<?php if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "pecraig@moneymovers.com"; $email_subject = "Mailing List Form"; function died($error) { // your error code can go here echo "We are very sorry, but there were error(s) found with the form you submitted. "; echo "These errors appear below.<br /><br />"; echo $error."<br /><br />"; echo "Please go back and fix these errors.<br /><br />"; die(); } // validation expected data exists if(!isset($_POST['first_name']) || !isset($_POST['last_name']) || !isset($_POST['email']) || !isset($_POST['telephone']) || !isset($_POST['company']) || !isset($_POST['street']) || !isset($_POST['city']) || !isset($_POST['state']) || !isset($_POST['zip'])) { died('We are sorry, but there appears to be a problem with the form you submitted.'); } $first_name = $_POST['first_name']; // required $last_name = $_POST['last_name']; // required $email_from = $_POST['email']; // required $telephone = $_POST['telephone']; // required $company = $_POST['company']; // required $street = $_POST['street']; // required $city = $_POST['city']; // required $state = $_POST['state']; // required $zip = $_POST['zip']; // required $error_message = ""; $string_exp = "/^[A-Za-z0-9 .'-]+$/"; if(!preg_match($string_exp,$first_name)) { $error_message .= 'The First Name you entered does not appear to be valid.<br />'; } if(!preg_match($string_exp,$last_name)) { $error_message .= 'The Last Name you entered does not appear to be valid.<br />'; } $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; if(!preg_match($email_exp,$email_from)) { $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; } if(!preg_match($string_exp,$company)) { $error_message .= 'The Company you entered does not appear to be valid.<br />'; } if(!preg_match($string_exp,$street)) { $error_message .= 'The Street you entered does not appear to be valid.<br />'; } if(!preg_match($string_exp,$city)) { $error_message .= 'The City you entered does not appear to be valid.<br />'; } if(!preg_match($string_exp,$state)) { $error_message .= 'The State you entered does not appear to be valid.<br />'; } if(!preg_match($string_exp,$zip)) { $error_message .= 'The Zip Code you entered does not appear to be valid.<br />'; } if(strlen($error_message) > 0) { died($error_message); } $email_message = "Response from Mailing List Page. Please enter in database.\n\n"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } $email_message .= "First Name: ".clean_string($first_name)."\n"; $email_message .= "Last Name: ".clean_string($last_name)."\n"; $email_message .= "Email: ".clean_string($email_from)."\n"; $email_message .= "Telephone: ".clean_string($telephone)."\n"; $email_message .= "Company: ".clean_string($company)."\n"; $email_message .= "Street: ".clean_string($street)."\n"; $email_message .= "City: ".clean_string($city)."\n"; $email_message .= "State: ".clean_string($state)."\n"; $email_message .= "Zip: ".clean_string($zip)."\n"; // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); @mail($email_to, $email_subject, $email_message, $headers); ?> <!-- include your own success html here --> Thanks for subscribing to our mailing list <?php } ?> 

@mail($email_to, $email_subject, $email_message, $headers);之后@mail($email_to, $email_subject, $email_message, $headers);

 header('Location: nextpage.php'); 

请注意,您永远不会看到“感谢订阅我们的邮件列表”

这应该是在下一页,如果你回声的任何文本,你会得到一个错误,因为标题已经被创build,如果你想redirect永远不会返回任何文本,甚至没有空间!

如果您的redirect在PHP中,则在redirect指令之前不应该向用户回应任何内容。

查看标题了解更多信息。

请记住,必须在发送任何实际输出之前调用header()方法,可以使用普通的HTML标记,文件中的空行或PHP

否则,您可以使用Javascript来redirect用户。

只是使用

 window.location = "http://www.google.com/" 

首先给你的inputtypes提交一个名字,像这个name='submitform'

然后把这个在你的PHP文件

 if (isset($_POST['submitform'])) { ?> <script type="text/javascript"> window.location = "http://www.google.com/"; </script> <?php } 

不要忘了把url更改为你的。

只要没有html和/或文本被打印到标准输出,您可以在任何你喜欢的地方包含你的标题function。

欲了解更多信息和用法: http : //php.net/manual/en/function.header.php


我在代码中看到,如果出现错误或成功,则会echo()一些文本。 不要这样做:你不能。 您只能redirect或显示文字。 如果你显示的文字,你将无法redirect。

每当你想redirect,发送标题:

 header("Location: http://www.example.com/"); 

记住,在此之前你不能发送数据给客户端。