0

HTML コード

<div id="fourmstyle" class="fourm">

<form action="scripts/mail.php" method="post">

    <label for="name">Your Name <required>*</required>
        </label>
    <input type="text" name="Name" id="Name" placeholder="Joe Bloggs">

    <label for="email">Your Email <required>*</required>
        </label>
    <input type="text" name="Email" id="Email" placeholder="Joebloggs@example.com">

    <label for="telephone">Telephone
        </label>
    <input type="text" name="Telephone" id="Telephone">

    <label for="type">Type
        </label>
        <select name="Type">                
            <option value="Booking" selected>Booking</option>
            <option value="B&B">B&amp;B</option>
            <option value="Question">Question</option>
            <option value="General">General</option>
            <option value="Website Feedback">Website Feedback</option>
        </select></p>

         <label for="messsage">Message <required>*</required>
            </label>
         <textarea name="Message" id="Message" rows="5" cols="25">
         </textarea></p>

         <label for="btn">&nbsp;</label>
         <button type="submit" class="button">Submit
         </button>
         <br>&nbsp;<requireddescription> *(indicates that the information is required)
         </requireddescription>
</form>

PHPコード

<?php
if(isset($_POST)) 
{
    $name = (isset($_POST['Name'])) ? strip_tags($_POST['Name']) : NULL; //if name is set, strip html tags, and return it, otherwise set the string as NULL.
    $email = (isset($_POST['Email'])) ? strip_tags($_POST['Email']) : NULL; //same as above.
    $telephone = (isset($_POST['Telephone'])) ? preg_replace('~[^0-9\-]~','',$_POST['Telephone']) : NULL; //if telephone is set, remove any characters that are not a number, or a dash, othewise set as NULL.
    $type = (isset($_POST['Type'])) ? strip_tags($_POST['Type']) : NULL; //strip tags.
    $message = (isset($_POST['Message'])) ? strip_tags($_POST['Message']) : NULL; //strip tags.
    if(empty($name) || empty($email) || empty($message)) 
    { 
        //name, email, and message are required fields, if they are empty, tell the user to go back and fill them in.
        echo '<script type="text/javascript"> alert ("Please go back and fill in all required lines"); </script>';
    }
    else 
    { 
        //if the fields are NOT empty, proceed with the mailing.
        $formcontent=" From: $name \n Type: $type \n\n Message: $message \n\n Telephone: $telephone";
        $recipient = "joebloggs@example.com";
        $subject = "Website Contact Form: $type";
        $mailheader = "From: $email \r\n";  

        if(mail($recipient, $subject, $formcontent, $mailheader)) 
        { 
            //if mail is sent to the SMTP server successfully, echo 'thank you'.
            echo '<script type="text/javascript"> alert ("Thankyou '.$name.' we have submitted your message and we will get back to you as soon as possible, if you need to speak to us in the mean time please call 01983 872244 "); </script>';
        }
        else 
        { 
            //otherwise, tell the user it did not go through.
            echo '<script type="text/javascript"> alert ("I am sorry but there has been an error submitting your request please try again or call us on 01983 872244"); </script>';
        }
    }
}
?>

わかりましたので、上記のコードは非常にうまく機能し、JS ポップアップ アラートが表示されます。ただし、JSアラートをOKすると、元のHTMLページではなく、mail.phpスクリプトに戻ります。これをどのように修正しますか?

4

3 に答える 3

1

これは当面の問題の解決に役立つはずですが、将来的には AJAX 呼び出しを試してください。

if(mail($recipient, $subject, $formcontent, $mailheader)) 
        { 
            //if mail is sent to the SMTP server successfully, echo 'thank you' and return to previous page.
            echo '<script type="text/javascript"> alert ("Thankyou '.$name.' we have submitted your message and we will get back to you as soon as possible, if you need to speak to us in the mean time please call 01983 872244 "); window.history.back(); </script>';
        }
        else 
        { 
            //otherwise, tell the user it did not go through.
            echo '<script type="text/javascript"> alert ("I am sorry but there has been an error submitting your request please try again or call us on 01983 872244"); window.history.back(); </script>';
        }

編集

最初のインスタンスを含めるのを忘れました

if(empty($name) || empty($email) || empty($message)) 
    { 
        //name, email, and message are required fields, if they are empty, tell the user to go back and fill them in and send them back.
        echo '<script type="text/javascript"> alert ("Please go back and fill in all required lines"); window.history.back()</script>';
    }
于 2013-03-01T16:18:24.430 に答える
0

HTML ページで何を行ったかによって異なります。

  1. return falsePHP が ajax 経由で呼び出された場合は、その ajax 呼び出しを開始した JavaScript 関数に追加する必要があります。

  2. フォームがあり、アクションの URL への定期的なポストバックを介したフォームの送信がその PHP ページの処理方法であった場合、そのアラート メッセージをセッションに保存している間に、PHP でリダイレクトを追加してそのページに戻す必要があります。または、その PHP の後に HTML をスローします。

于 2013-03-01T15:45:10.717 に答える
0

mail.php に送信すると、mail.php がユーザーの新しいページになります。呼び出し元のページに引き続き表示したい場合は、AJAX 経由で送信するか、スクリプトが呼び出されたページに戻るようにブラウザーに指示する必要があります。2 番目の方法では、これをスクリプト エコーに追加します。

window.history.back()
于 2013-03-01T15:44:28.510 に答える