PHP ile Sayfa Yenileme Girs-Data mesajı önlemek için nasıl

6 Cevap

Cevap önemsiz olup olmadığını PHP nispeten yeni duyuyorum, yani özür dilerim. Lol

Ben basit Bize e-posta formu (aslında bir WordPress sayfa şablonu dosyası) yazdı. Tüm kod tek bir dosyada olduğunu.

Kullanıcı formu gönderdikten ve e-posta gönderildikten sonra, dosyanın bir teşekkür mesajı oluşturur.

Kullanıcı sayfa ederiz yükler, onlar ben bu soruyu soruyorum neden olan "Form Verilerini yeniden gönderilmesi" istenir.

Benim soru: Nasıl form verilerini yeniden ve hala tek bir dosyada (Thank You veri dahil) benim kod tüm tutmak için istemi önlemek mi?

EDIT: Ben millet başlıkları (Yer:) kullanmak gördüm, ancak ben tek bir dosyada tüm kodumu tutmak istiyorsanız için çalışacağını sanmıyorum.

6 Cevap

Farklı bir sorguya yönlendirme olabilir.

header("Location: ?page=thankyou");

Sonra, hatta POST veri gönderilmiş olup olmadığını kontrol etmek gerekmez. Teşekkür sayfası eşit ise sadece teşekkür sayfası görüntüler.

Bu benim için çalıştı, sadece header () fonksiyonu gibi Onceleri değil html dosyasında herhangi bir yere konabilir:

<?php
if (!empty($_POST)){
?>
    <script type="text/javascript">
        window.location = window.location.href;
    </script>
<?php } ?>

Ben prevent_resend.php içine yerleştirilir ve daha sonra postdata işlem yapıldı sonra dahil.

// ... save data from $_POST to DB
include('prevent_resend.php');
// ... do some other stuff

Siz form göndermek ve teşşekkür mesajı göstermek için javascript kullanabilirsiniz. Bu şekilde tarayıcı sayfasını asla terk etmez.

Hatta bir header ('Location: xxx') ile; Eğer hala aynı sayfaya yönlendirme ve gösterilen gerekenleri ayırt etmek için bir url parametresi veya bir oturum değişkeni ayarlayabilirsiniz ya yapabilirsiniz.

Ben (neden bunu ayırmak, ve kullanımı require_once paylaşımlı kitaplık kodu dahil etmek değil ki?) Tek bir dosyada tüm kodu için ihtiyacı soru rağmen, header('Location:') tekniği hala tamamen geçerli. Yapmanız gereken:

header('Location: http://www.example.com/path/to/my-one-file-of-code.php?thankyou=1');

Ardından, dosya, sen olabilir:

if (isset($_GET['thankyou']) && $_GET['thankyou']) {
    // Do whatever it is you do to thank the visitor.
}

Bu benim için çalıştı:

header("Location: #");