etil alkol rp satın al
chat eczaonline.com >

Site İçi Flood Engelleme

Azat Metin

Profesyonel
Katılım
4 Kas 2010
Mesajlar
514
Beğeniler
5
Konum
Diyarbakır
#1
Merhaba arkadaşlar,
Bu script eğer bir sitedeki bir ip dakikada 40 link açıyorsa onu direk belirlediğiniz sayfaya yönlendiyor yada belirlediğiniz bir yazı ona çıkıyor :hihi: Sözü fazla uzatmadan kodlara dökersek

PHP:
<?php

$a = (int)date("i");
      $ip = $_SERVER['REMOTE_ADDR']; 
      $exec = mysql_query("insert into tbllog(ip,tarih) values('$ip','$a')");
      $z = $a-1;
      $q = mysql_query("select * from tbllog where ip='$ip' and tarih >='$z'");
      if(mysql_num_rows($q)>=40)
      {
         $ban = mysql_query("insert into tblbanlist(ip) values('$ip')");
         if($ban)
         {
            header('Location: ban.html');
         }
      }
      $q2 = mysql_query("select * from tblbanlist where ip='$ip'");
      if(mysql_num_rows($q2)>=2)
      {
            header('Location: ban.html');
      }
         
      $settime = "00:00";
      $gettime = date("h:i");
      if($gettime==$settime)
      {
         $trunlog = mysql_query("truncate table tbllog");
         if($trun)
         {
            header('Location: bakim.html');
         }
      }
      $setday = "15";
      $a = date("d");
         if($setday==$a)
         {
            $trunban = mysql_query("truncate table tblbanlist");
            if($trunban)
            {
               header('Location: bakim.html');
            }
         }
?>


Daha sonra PHPmyAdminden Sorgulatıp tabloları olusturacağimiz kodları verelim :hmmm:

PHP:
CREATE TABLE `tblbanlist` (
  `id` int(11) NOT lisanssız auto_increment,
  `ip` varchar(50) collate utf8_turkish_ci NOT lisanssız,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=5 ;
CREATE TABLE `tbllog` (
  `id` int(11) NOT lisanssız auto_increment,
  `ip` varchar(50) collate utf8_turkish_ci NOT lisanssız,
  `tarih` varchar(50) collate utf8_turkish_ci NOT lisanssız,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=80 ;


Umarım kendimi ifade edebilmişimdir.
Konu ile ilgili sorulara herzaman açığım.
Saygılarımla..
Azat Metin / www.yasalhost.com
[email protected]

 

Angelo

Onursal Üye
Katılım
13 Ara 2004
Mesajlar
9,603
Beğeniler
111
Yaş
38
Konum
AZ
#2
İki problem var, date(i) şeklinde aldığınız için, 3:29 için 29 u alıyor. Aynı kişi dakika bölümü 29 olan, herhangi başka bir gün ve saatte girsede, banlama limitine sayar yine. 00:00 da kimse ziyaret etmezse tablo zaten sıfırlanmaz. Tablodan tüm geçmiş ayak izi satırlarını çekmek de oldukça zahmetli bir işlem.

$_SESSION['visited']++;

şeklinde bir sayaç kullanılarak, çok daha verimli yapılabilir. Yine de paylaştığınız için teşekkürler
 

Azat Metin

Profesyonel
Katılım
4 Kas 2010
Mesajlar
514
Beğeniler
5
Konum
Diyarbakır
#3
İki problem var, date(i) şeklinde aldığınız için, 3:29 için 29 u alıyor. Aynı kişi dakika bölümü 29 olan, herhangi başka bir gün ve saatte girsede, banlama limitine sayar yine. 00:00 da kimse ziyaret etmezse tablo zaten sıfırlanmaz. Tablodan tüm geçmiş ayak izi satırlarını çekmek de oldukça zahmetli bir işlem.

$_SESSION['visited']++;

şeklinde bir sayaç kullanılarak, çok daha verimli yapılabilir. Yine de paylaştığınız için teşekkürler
Yardımcı olduğunuz için ben teşekkür ederim.
Söylemek istediğim birkaç şey var. Banlama limiti sadece o dakika için geçerlidir. Neden tabloları sıfırlama ihtiyacı duyuyoruz ki ? Ben denedim daha önce bu kodları. Sorunsuz çalışıyor diye hatırlıyorum. Neyse hocam kurcalamaya gerek yok.. Tabloları sıfırlarsak birşey kaybetmeyiz :D
 

Angelo

Onursal Üye
Katılım
13 Ara 2004
Mesajlar
9,603
Beğeniler
111
Yaş
38
Konum
AZ
#6
Yardımcı olduğunuz için ben teşekkür ederim.
Söylemek istediğim birkaç şey var. Banlama limiti sadece o dakika için geçerlidir. Neden tabloları sıfırlama ihtiyacı duyuyoruz ki ? Ben denedim daha önce bu kodları. Sorunsuz çalışıyor diye hatırlıyorum. Neyse hocam kurcalamaya gerek yok.. Tabloları sıfırlarsak birşey kaybetmeyiz :D
Şunun için gerekir.
$a = (int)date("i");

Şu anda burada saat 5 Ocak, 11:24 AM.
Ben bu siteye girdiğimde, $a değeri -> 24. Tabloya bunu sokuyorsunuz.

Dakika kısmı 20'den büyük, 40 sayfa gezimi yaparsam, tarihten bağımsız, 10 gün sonra bile dakika kısmı 20'den büyük bir saatte siteden banlanırım. Sadece dakikayı baz alarak insanların kaç sayfa gezdiğini hesaplamak yanlış kullanım.
 

Azat Metin

Profesyonel
Katılım
4 Kas 2010
Mesajlar
514
Beğeniler
5
Konum
Diyarbakır
#7
Şunun için gerekir.
$a = (int)date("i");

Şu anda burada saat 5 Ocak, 11:24 AM.
Ben bu siteye girdiğimde, $a değeri -> 24. Tabloya bunu sokuyorsunuz.

Dakika kısmı 20'den büyük, 40 sayfa gezimi yaparsam, tarihten bağımsız, 10 gün sonra bile dakika kısmı 20'den büyük bir saatte siteden banlanırım. Sadece dakikayı baz alarak insanların kaç sayfa gezdiğini hesaplamak yanlış kullanım.
Katılıyorum, haklısınız. :harika:
 

Bu konuyu okuyanlar (Üyeler: 1, Misafirler: 0)

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur. iyinet.com sayfalarında yer alan yazı, görsel ve linklerle ilgili hukuki şikayetleriniz için Buradan iletişime geçmeniz durumunda, ilgili kanunlar ve yönetmelikler çerçevesinde en geç 7 gün içerisinde iyinet yönetimince tarafınıza dönüş sağlanacaktır. Betcup Artemisbet Forum canlı bahis sohbet - - chat
Üst