0

同じ URL 内で送信するフォームがあります (たとえば、form.co.uk はフォームの場所であり、送信に成功すると、別の URL の確認ページに移動するのではなく、form.co.uk にとどまり、「同じページで確認のご連絡をいただきありがとうございます。

ただし、これを変更する必要があるため、送信時に別の URL に移動します (ありがとうページのみ)。

これについてどうすればいいですか?

html

<div class="width-inner">
    <?if ($c->submitted && count($c->errors) == 0): ?>

    <div class="thankyou-box">
        <h2>Thank you for your enquiry</h2>
        <h3>We'll get back to you as soon as we can.</h3>
    </div>
    <script type="text/javascript">
    _gaq.push(['_trackPageview', "/thanks"]);
    </script>

    <? else: ?>

    <div class="contact-box left" style="width:650px;">
        <form action="form.php" method="post">
            <div class="heading">
                <h2>Contact Us</h2>
                <h3>Get in touch now.</h3>
            </div>
            <? if(count($c->errors) > 0): ?>
            <div class="error">
                There was a problem with your enquiry
            </div>
            <? endif; ?>
            <div class="vspace20"></div>

            <label>Your Name:</label>
            <input type="text" name="name" class="<?= $c- >requestEmpty('name') ? 'invalid' : '' ?>" value="<?= @$_REQUEST['name'] ?>"/>
            <div class="required">Required field</div>
            <div class="clear"></div>

            <label>Email Address:</label>
            <input type="email" name="email"  class="<?= $c- >requestEmpty('email') ? 'invalid' : '' ?>" value="<?= @$_REQUEST['email'] ?>"/>
            <div class="required">Required field</div>
            <div class="clear"></div>

            <hr/>

            <label>Enquiry:</label>
            <textarea name="enquiry"  class="<?= $c->requestEmpty('enquiry') ? 'invalid' : '' ?>">I  would like to contact you.</textarea>
            <div class="clear"></div>

            <hr/>
            <input type="hidden" name="extra" value="<?=  @$_REQUEST['extra'] ?>"/>
            <div class="notice">Your details will not be used for marketing purposes</div> <br>
            <input type="submit" class="btn-submit right" value="Claim  Now" name="submit"/>
            <div class="clear"></div>
        </form>
    </div>
    </div>

ハンドラのコード

<?php



class Contact {

var $submitted = false;
var $errors = array();
var $template = "Name: %s\r\nEmail Address: %s\r\nEnquiry: %s";

public function __construct() {
    if (!empty($_REQUEST['submit'])) {
        $this->submitted = true;
    } else {
        return;
    }
    $requiredFields = array(
        'name', 'email'
    );
    foreach($requiredFields as $key) {
        if ($this->requestEmpty($key)) {
            $this->errors[] = $key;
        }
    }
    if (count($this->errors) == 0) {
        $this->_sendForm();
    }

}

private function _sendForm() {
    $body = sprintf($this->template,
            $_REQUEST['name'],
            $_REQUEST['email'],
            $_REQUEST['enquiry'] . "\r\n" . $_REQUEST['extra']);

    $headers = 'From: auto@magnetikmedia.co.uk' . "\r\n" .
                'Reply-To: auto@magnetikmedia.co.uk' . "\r\n" .
                'X-Mailer: PHP/' . phpversion();

    mail("johnfarrell2012@gmail.com", "New contact form", $body, $headers, "-     fauto@magnetikmedia.co.uk");

header("Location: thank_you.php"); 
exit;
}

public function requestEmpty($key) {
    if (empty($_REQUEST['submit'])) {
        return false;
    }
    if (!isset($_REQUEST[$key])) {
        return true;
    }
    if (trim($_REQUEST[$key]) == "") {
        return true;
    }
    return false;
}

}

?>

私はそれが上と関係があるに違いないと思います if else ステートメント、つまり。「成功してエラーがなければ、www.whatever.com にアクセスしてください」と言いたいのですが、これはどのように書けばよいでしょうか?

4

3 に答える 3

0

HTMLを変更する必要があるかもしれませんが、

<form action='page.php' method='post'>

または、同じページで PHP が処理された後にヘッダーを送信します。

header('LOCATION:page.php'); die();

. 現在のページを強制終了するために必ず使用die();してください。

于 2013-09-09T23:22:30.913 に答える