0

私は同時に発生することができない 2 つの望ましい機能の間に立ち往生しています。メール送信フォームがあり、「送信」ボタンを押した後にユーザーをサンキューページにリダイレクトする必要があります。3 つの html 代替案と 1 つの php ファイルを提供します。

html がこのような場合、メールは送信されますが、リダイレクトは機能しません。

            <form id="contact_form" action="mailer.php" method="post" enctype="text/plain">
                                    <div class="message" style="display:none"><div id="contact_alert" class="alert"></div></div>
                <label for="name">Name:</label>
                <input type="text" name="name" id="name" class="full-width help" title="Insert your name" />
                <label for="email">Email:</label>
                <input type="email" name="email" id="email" class="full-width help" title="Insert your email" />
                <label for="message">Message:</label>
                <textarea name="message" id="message" cols="30" rows="7" class="full-width help" title="Insert your message"></textarea>
                <input type="submit" value="Submit" class="button" />
            </form>

最後の行をこれに変更すると、メールが再度送信されますが、リダイレクトはまだ機能しません。

            <form id="contact_form" action="mailer.php" method="post" enctype="text/plain">
                                    <div class="message" style="display:none"><div id="contact_alert" class="alert"></div></div>
                <label for="name">Name:</label>
                <input type="text" name="name" id="name" class="full-width help" title="Insert your name" />
                <label for="email">Email:</label>
                <input type="email" name="email" id="email" class="full-width help" title="Insert your email" />
                <label for="message">Message:</label>
                <textarea name="message" id="message" cols="30" rows="7" class="full-width help" title="Insert your message"></textarea>
                <a href="thank-you"><input type="submit" value="Submit" class="button" /></a>
            </form>

最後に、最後の行をこれに変更すると、リダイレクトは機能しますが、メールは送信されません。

            <form id="contact_form" action="mailer.php" method="post" enctype="text/plain">
                                    <div class="message" style="display:none"><div id="contact_alert" class="alert"></div></div>
                <label for="name">Name:</label>
                <input type="text" name="name" id="name" class="full-width help" title="Insert your name" />
                <label for="email">Email:</label>
                <input type="email" name="email" id="email" class="full-width help" title="Insert your email" />
                <label for="message">Message:</label>
                <textarea name="message" id="message" cols="30" rows="7" class="full-width help" title="Insert your message"></textarea>
                <a href="thank-you"><input type="button" value="Submit" class="button" /></a>
            </form>

これはphpファイルです:

<?php
$to = "info@domain.com";
$subject = "Hi Nick, this is ".$_POST['name'];
$name_field = $_POST['name'];
$email_field = $_POST['email'];
$message = $_POST['message'];

$headers = 'From: '.$_POST['email'].'' . "\r\n" .
'Reply-To: '.$_POST['email'].'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

$body = $message;

mail($to, $subject, $body, $headers );
header('Location: http://www.domain.com/thank-you') ;
?>

どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

0

<input type=button>3 番目の html ブロッ​​クでは、クリック可能なボタン (主にスクリプトをアクティブにするために JavaScript で使用される) を定義する単純なハイパーリンクであるため、リダイレクトが機能します。したがって、フォームは送信されませんが、ハイパーリンクは機能します。

2 番目の html ブロッ​​クでは<input type=submit>、フォームをアクション ファイルに送信するという既定の動作を持つ送信ボタンになり、ハイパーリンクが機能しないため、ハイパーリンクは機能しません。

これが質問への回答ではないことはわかっていますが、理由を説明したいだけです。

于 2013-08-14T23:50:54.267 に答える
0

✓ 編集 (正常な送信に使用される実際のコード)


HTMLフォーム

<form id="contact_form" action="mailer.php" method="post">
<div class="message" style="display:none"><div id="contact_alert" class="alert"></div></div>
    <label for="name">Name:</label>
    <input type="text" name="name" id="name" class="full-width help" title="Insert your name" />
    <label for="email">Email:</label>
    <input type="email" name="email" id="email" class="full-width help" title="Insert your email" />
    <label for="message">Message:</label>
    <textarea name="message" id="message" cols="30" rows="7" class="full-width help" title="Insert your message"></textarea>
    <input type="submit" value="Submit" class="button" />
</form>

メールハンドラ

<?php

$to = "email@example.com";

$subject = "Hi Nick, this is ".$_POST['name'];
$name_field = $_POST['name'];
$email_field = $_POST['email'];
$message = $_POST['message'];

$headers = 'From: '.$_POST['email'].'' . "\r\n" .
'Reply-To: '.$_POST['email'].'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

$body = $message;

mail($to, $subject, $body, $headers );
header('Location: http://www.example.com/thank-you');

// commented out for testing purposes.
// Email was sent and received successfully
// echo "Success";
?>


✓ 元の回答 (2013 年 8 月 14 日)


この=>は要素enctype="text/plain"内で使用しないでください。そのため、問題が発生していました。<form>

この再フォーマットされたフォームで試してください:

<form id="contact_form" action="mailer.php" method="post">
<div class="message" style="display:none"><div id="contact_alert" class="alert"></div></div>
    <label for="name">Name:</label>
    <input type="text" name="name" id="name" class="full-width help" title="Insert your name" />
    <label for="email">Email:</label>
    <input type="email" name="email" id="email" class="full-width help" title="Insert your email" />
    <label for="message">Message:</label>
    <textarea name="message" id="message" cols="30" rows="7" class="full-width help" title="Insert your message"></textarea>
    <input type="submit" value="Submit" class="button" />
</form>


私はこれを置き換えました:

<form id="contact_form" action="mailer.php" method="post" enctype="text/plain">
                                                        /--------------------/

これとともに:

<form id="contact_form" action="mailer.php" method="post">

そして、これは無効です:

<a href="thank-you"><input type="button" value="Submit" class="button" /></a>

これは有効です:

<a href="thank-you.html">Click here</a>

これも有効です。

<input type="button" value="Submit" class="button" />
于 2013-08-15T01:45:17.653 に答える