Bir php form için başvuru sayısını sınırlamak için bir yolu var mı?

5 Cevap php

örn. Bir kayıt formu sadece x miktarını kez kullanılabilir?

5 Cevap

PHP için Hızlı ve Kirli Çözüm.

Bir sayfasını ziyaret yaptığınızda, bu sayacı artırır. Çok kez sayfasını die() s anlamına gelir. Birinin formu gönderdiğinde sadece idam edilecek bir noktada bu kodu koymak seçebilirsiniz.

O her öylesine sık sık sayısını sıfırlar.

Bilinen Hatalar: Takas Çerezler sonları onu çerezleri kapalı olan, onu kırar.

<?php

session_start();

if(!isset($_SESSION['count']))
{
   $_SESSION['count'] = 1;
   $_SESSION['first'] = time();
}
else
{
   // Increase the Count
   $_SESSION['count']++;
   // Reset every so often
   if($_SESSION['first'] < (time() - 500))
   {
      $_SESSION['count'] = 1;
      $_SESSION['first'] = time();
   }
   // Die if they have viewed the page too many times
   if($_SESSION['count'] > 100)
   {
      die("You have submitted to many times");
   }
}

Bu bir kullanıcı başına çözüm istiyorum verilir. Bir bütün sitesi şey ise, sadece yorum ve ben sileceğiz.

Evet. Kullanıldığı oldu kaç kez bir veritabanına form işleme sayfa kaydı var, ve x kullanımları kaydedilir zaman formu devre dışı var.

Tarafından used x amount of times Ben aslında demek tahmin submitted x amount of times. Siz form gönderildiğinde ve doğrulama geçmez her zaman artırır ve sınıra ulaşıldığında daha gönderme girişimlerini engelleyen bir oturum sayacını olabilir.

Eğer ajax formu göndererek ediyorsanız this oldukça iyi bir kaynaktır.

Ne yazık ki, sağlam bir yöntem, burada yoktur. En iyi yolu, bir çerez saklamak olurdu, ama belli ki onlar çerezleri temizleyebilirsiniz. Siz veritabanında bu depolama sonra, (vb tarayıcı,) onların user-agent ile (md5) kendi IP adresini birleştirerek çeşit başka eşsiz bir dize / id yaparak deneyebilirsiniz, ancak bu muhtemelen olmamalı bazı insanlar inkar edecek reddedildi.