2013-02-15 67 views
0

我有一个表单触发提交的电子邮件,但我想重定向到提交不同的页面。电子邮件没有触发重定向到页面

<form id="customisesystem" name="enquiry" onsubmit="return formCheck(this);" method="POST" action="<?php echo the_permalink(); ?>"> 

我想这个更改为以下:

<form id="customisesystem" name="enquiry" onsubmit="return formCheck(this);" method="POST" action="<?php bloginfo('url'); ?>/thank-you"> 

然而,这没有按”

目前的电子邮件只有满足以下(即重新加载相同页面)来通过触发电子邮件。

任何人都可以看到出了什么问题?

这是发送电子邮件的脚本。

<? if(isset($_POST['submit'])) { 

$to = "[email protected]"; 
$header = 'From: [email protected]'; 
$subject = "Quotation"; 
$enquiry_first_name = $_POST['enquiryfirstname']; 
$enquiry_last_name = $_POST['enquirylastname']; 
$enquiry_title = $_POST['enquirytitle']; 
$enquiry_organisation = $_POST['enquiryorganisation']; 
$enquiry_address = $_POST['enquiryaddress']; 
$enquiry_country = $_POST['enquirycountry']; 
$enquiry_email_address = $_POST['enquiryemailaddress']; 
$enquiry_telephone = $_POST['enquirytelephone']; 
$enquiry_additional_comments = $_POST['enquiryadditionalcomments']; 
$enquiry_product = get_the_title(); 
if(!empty($_POST['hardware'])) { 
    foreach($_POST['hardware'] as $check) { 
     $hardwareresults .= $check."\n"; 
    } 
} 
if(!empty($_POST['systems'])) { 
    foreach($_POST['systems'] as $check) { 
     $systemsresults .= $check."\n"; 
    } 
} 
$productresults = ""; 
$quantities = array_combine($_POST['product'], $_POST['quantity']); 
foreach ($quantities as $product => $quantity) { 
    if ($quantity > 0) { 
     $productresults .= "$quantity x $product \n"; 
    } 
} 


$body = "You have a quote request from the website: 

Name: $enquiry_title $enquiry_first_name $enquiry_last_name 
Type of organisation: $enquiry_organisation 
Address: $enquiry_address, $enquiry_country 
E-Mail: $enquiry_email_address 
Tel: $enquiry_telephone 
Comments: $enquiry_additional_comments 

Send more information on: 
$systemsresults 

Quotation: 
$enquiry_product 

Hardware: 
$hardwareresults 

Accessories: 
$productresults 

Kind regards"; 

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

echo "Thank you for your enquiry."; 

} ?> 
+0

显示你的js动作(formCheck)请 – 2013-02-15 11:14:19

+0

你在哪里发送php代码发送谢谢页面或者同一个表单页面 – anstrangel0ver 2013-02-15 11:17:02

回答

2

继续使用其发送电子邮件

,并在那里你已经使用回声"Thank you for your enquiry.";

header('location: ' . bloginfo('url') . '/thank-you'); 

编辑

要获得发布的数据里面感谢页面替换它的电子邮件代码后<?php echo the_permalink(); ?>,你应该从邮件页面传递这些数据。

有2种方式,你可以在这种情况下

  1. 使用get方法发送其他页面上的数据。 `/谢客/?名称= ABC &年龄= XYZ
  2. 存储在会话中的值,并访问这些会话页面上

编辑

尝试是这样的

header('location: http://www.yourblog.com/thank-you/?title=' . $enquiry_title); 

,并感谢您页,把它变成一个变量,然后在你想要显示它的地方回显那个变量。

<?php 
$title = $_GET['title']; 
... 
?> Thank you message and your HTML structure 
Your message titled: <b> <?php echo $title; ?> </b> is received. we will contact you shortly 
.... blah blah 

我希望这是有道理的。

+0

它实际上并不是拾取'bloginfo('url')',语法错误?它只是读感谢的一部分,重定向和发送作品。 – Rob 2013-02-15 13:29:21

+0

如果页面在博客范围之外意味着博客文件不包含在邮件php页面中,那么它将不会转到bloginfo('url')。你需要在邮件页面有一些网址 – 2013-02-15 14:36:47

+0

好吧,没问题,我可以硬编码。没有办法使用表单的动作吗?感谢页面有一些东西依赖于发布数据,这些数据不再适用于您的方法。 – Rob 2013-02-15 14:40:55

0

这很正常,因为您不会发送任何信息到您的电子邮件脚本。要在发送电子邮件后将客户端重定向到其他页面,您必须将propper HTTP标头发送给用户代理。 您可以通过将此代码添加到您的电子邮件脚本的最后一行做到这一点(不改变行动提交表单):

header ("Location: " . bloginfo('url') . "/thank-you"); 

这将用户重定向到另一个页面后,邮件发送过程结束。

编辑

由于“阿米尔马哈茂德”已经提到的,你可以在URL查询字符串像这样通过标题:

header ("Location: http://some.site.com/foo/bar/thank-you/?title=$enquery_title"); 

,并感谢页面只是这样做:

$title = $_GET["title"]; 
# use $title as you need 

我跳这有助于

+0

这实际上并不是拾取'bloginfo('url')',语法错误?它只是读感谢的一部分,重定向和发送作品。 – Rob 2013-02-15 13:29:39

相关问题