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 = "rob@domain.com";
$header = 'From: admin@domain.com';
$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.";

} ?>
4

2 に答える 2

2

<?php echo the_permalink(); ?>メールを送信するを使い続ける

エコーを使用したメールコードの後に​​、次のように"Thank you for your enquiry.";置き換えます

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

編集

ありがとうページ内に投稿されたデータを取得するには、メールページからそのデータを渡す必要があります。

この状況で他のページにデータを送信する方法は2つあります

  1. getメソッドを使用します。`/ありがとう/?name = ABC&age = 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

これが理にかなっていることを願っています。

于 2013-02-15T11:27:12.557 に答える
0

電子メールスクリプトに情報を送信しないため、これは正常です。電子メールが送信された後にクライアントを別のページにリダイレクトするには、適切なHTTPヘッダーをユーザーエージェントに送信する必要があります。これを実現するには、このコードを電子メールスクリプトの最後の行に追加します(送信フォームのアクションを変更しないでください)。

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

これにより、メール送信プロセスが終了した後、ユーザーは別のページにリダイレクトされます。

編集

「AamirMahmood」ですでに述べたように、次のようにURLクエリ文字列でタイトルを渡すことができます。

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

そして、ありがとうページでは、次のようにします。

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

これがお役に立てば幸いです

于 2013-02-15T11:24:32.033 に答える