-1

次のフォーム送信コードを自分のサイトにうまく統合しました。うまく機能します。ただし、フォームの送信が成功した場合はコードでユーザーをあるページにリダイレクトし、失敗した場合は別のページにリダイレクトしたいと考えています。それを行うために次のコードをどのように適応させることができますか? それは本当に私の神経質になり始めています!:-P

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$enquiry = $_POST['enquiry'];
$formcontent=" From: $name \n Phone: $phone \n Message: $enquiry";
$recipient = "email@email.co.uk";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!";
?>

編集:

OK、コードを次のように変更しました。

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$enquiry = $_POST['enquiry'];
$formcontent=" From: $name \n Phone: $phone \n Message: $enquiry";
$recipient = "email@email.co.uk";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
if(mail($recipient, $subject, $formcontent, $mailheader)){
header("Location: mailer-success.htm");
}else{
header("Location: mailer-fail.htm");
}
exit;
?>

これは機能しますが、失敗ページには決して行きません。これは、フィールドが空であっても常にメールが送信されるためだと思います。私はjquery検証を実施しています(テスト目的で無効にしました)が、明らかにJavaScriptが有効になっているユーザーに対してのみ機能します。フォーム フィールドにデータが含まれている場合に成功ページのみを表示するようにコードを変更するにはどうすればよいですか? どんな助けでも大歓迎です。

4

6 に答える 6

7

ページにリダイレクトを追加します。

// Test to see if variables are empty:
if(!empty($name) && !empty($email) && !empty($phone) && !empty($enquiry)){
    // Test to see if the mail sends successfully:
    if(mail($recipient, $subject, $formcontent, $mailheader)){
        header("Location: success.php");
    }else{
        header("Location: error.php");
    }
}else{
    header("Location: back_to_form.php");
}
于 2013-05-29T15:41:37.157 に答える
3

mail 関数は、成功/失敗時に true/false を返します。したがって、それはかなり単純です:

if (mail($recipient, $subject, $formcontent, $mailheader)) {
    header('location: success.php');
} else {
    header('location: fail.php');
}
于 2013-05-29T15:41:51.083 に答える
2

追加

header("Location: successpage.html");

コードの一番下に移動して削除しますecho "Thank you!";

于 2013-05-29T15:41:25.267 に答える
1

エコーを取り除き、ヘッダーを使用します。

header("Location: success.php");

失敗した場合は、error.php にリダイレクトします

header("Location: error.php");

フォームがあったページに移動したいが、エラーまたは成功メッセージを表示したい場合は、次のようにします。

header("Location: original.php?status=error")

または、必要に応じてエラーを成功に変更すると$_GET['status']、フォームが失敗したか成功したかを判断するために使用できます。

于 2013-05-29T15:42:18.223 に答える
0
if (失敗) {
  header("場所: success.php");
  出口;
} その他の場合 (成功) {
  echo "ありがとう";
}
于 2013-05-29T15:43:18.510 に答える