Yenileme seçeneği kısıtlamak nasıl?

3 Cevap php

Bir sorun var. İnsanların benim sitede bir sayfayı yenilemek mümkün olacağını istemiyorum. Ben bunu nasıl yapabilirim?

3 Cevap

Yenile bir tarayıcı yan çözümdür. Sunucu tarafında onu kısıtlamak olamaz.

Ne yapabilirim aslında iki kez herhangi bir sayfasını ziyaret engellemek için PHP'nin OTURUMU kullanmak için aslında.

<?php

session_start();

if(!isset($_SESSION['disablethispage'])){
    $_SESSION['disablethispage'] = true;
    // serving the page first time

}else{
    // visited before or page was refreshed

}

Ancak kullanıcı hala o / o web siteniz için oturum tanımlama kaldırır eğer aynı sayfaya geri gelmek mümkün değildir.

Çift ilanıyla ilgili söz ediyorsanız, size POST-REDIRECT-GET Çözüm bakmak isteyebilirsiniz. Bkz: http://en.wikipedia.org/wiki/Post/Redirect/Get

Bunun gibi, onlar o sayfayı ziyaret son kez saklamak için deneyin:

<?php
session_start();
if(isset($_SESSION['last_visit']) && time() - $_SESSION['last_visit'] < 10) {
    die('Wait ten seconds before you reload this page');
}else{
    $_SESSION['last_visit'] = time();
}
?>

Bu on saniye başına bir sayfa yükler kısıtlamak olacaktır.

Bu yöntem, kullanıcı tanımlama boş olmadığını bağlıdır, böylece daha sıkı bir çözüme ihtiyacınız varsa IP adresini kontrol edin ve bir veritabanında o kaydetmek zorunda, ama o daha fazla sunucu kaynağı gerektirir.

Cant. İnsanların sayfayı yenilemek mümkün istemiyorum neden açıklamak, belki biz daha iyi bir çözüm açıklayabilir.

Edit:

Ferahlatıcı sonrası formları kısıtlayan için güzel bir çözüm, bir formu gönderdiğinizde tarayıcı yönlendirmek. Bu gibi çalışır:

  • Form pageA.php üzerinde ve pageB.php için gönderir
  • pageB.php bir başlık yapar ("Konum: pageC.php"); Form verilerini işleme sonra (302 yönlendirme)
  • pageC.php üzerinde kullanıcı gerçekleştirilen eylem sonucu görüntülemek.

Sonuç olarak, bir kullanıcı pageC.php yeniler, daha sonra formu yeniden gönderilen olmasıdır. Kullanıcı tekrar öne ardından geri düğmesine vurur ve eğer, tarayıcı pageC.php yükler ve böylece formu sonra da ya teslim edilmez.