• 24-07-2009, 00:56:35
    #1
    Üyeliği durduruldu
    Slm arkadaslar,
    biraz once basit bir ban sistemi yazdim kendime gore , ama bunu nasil zamanli yaparim bilmiyorum mesela bani bugun atim 23.07.2009 ve yarin bitmesini istiyorum bunu nasil yaparim yardimci olacak varmi acaba?.
    Bu arada benim yaptigim su
    CREATE TABLE IF NOT EXISTS `banned` (
      `id` int(25) NOT NULL auto_increment,
      `ip` varchar(25) NOT NULL default '',
      `neden` text NOT NULL,
      `tarih` date NOT NULL default '0000-00-00',
    banlimi diye boyle bakiyorum
    $ip = $_SERVER['REMOTE_ADDR'];
    $bul = mysql_query("SELECT * FROM banned WHERE ip='$ip'");
    $ban = mysql_fetch_array($bul);
    if($ip == $ban['ip']){ 
    die("<CENTER>Siteye girmeniz yasaklanmistir<br>Sebep: ".$ban['neden']."</center>");
    exit;
    }
  • 24-07-2009, 01:03:22
    #2
    SQL sorgunu şöyle birşey yapsan olur mu acaba?
    SELECT * FROM banned WHERE ip='$ip' AND tarih < DATE_SUB(NOW(), INTERVAL 5 DAY)
    Mesela bu 5 gün geçtimi banı bitirir diye düşünüyorum. Bi dener misin?
  • 24-07-2009, 01:07:50
    #3
    Üyeliği durduruldu
    sendetiklat adlı üyeden alıntı: mesajı görüntüle
    SQL sorgunu şöyle birşey yapsan olur mu acaba?
    SELECT * FROM banned WHERE ip='$ip' AND tarih < DATE_SUB(NOW(), INTERVAL 5 DAY)
    Mesela bu 5 gün geçtimi banı bitirir diye düşünüyorum. Bi dener misin?
    Hocam herkezi 5 gun banlamak istemiyorum. bazileri 1 gun digerini 10 gun falan.

    ginede tsk ederim, istedigim olmazsa senin dedigini kulanirim.
  • 24-07-2009, 01:19:55
    #4
    o 5 i veritabanından okut o zaman. Veritabanına bir alan daha ekle kaç gün banlanacağı orda tutulsun. Bu sorgudan önce o değeri okut ve $gun değişkenine aktar mesela. Sonra ordaki 5 yerine $gun yaz.
  • 24-07-2009, 02:11:50
    #5
    Üyeliği durduruldu
    usta

    su dediginiz denedim
    SELECT * FROM banned WHERE ip='$ip' AND tarih < DATE_SUB(NOW(), INTERVAL 5 DAY)
    ama calismadi hala banli tutuyor.
  • 24-07-2009, 02:13:53
    #6
    Misafir
    nullsoft adlı üyeden alıntı: mesajı görüntüle
    usta
    su dediginiz denedim
    SELECT * FROM banned WHERE ip='$ip' AND tarih < DATE_SUB(NOW(), INTERVAL 5 DAY)
    ama calismadi hala banli tutuyor.
    Veritabanında gun olarak tablo açıp;

    SELECT * FROM banned WHERE ip='$ip' AND tarih < DATE_SUB(NOW(), INTERVAL '$gun')
    gun bölümüne 2 yaz veritabanında.

    uzun süre oldu php ile ilgilenmeyeli, bir denermisin.
  • 24-07-2009, 02:26:03
    #7
    Üyeliği durduruldu
    bykaan adlı üyeden alıntı: mesajı görüntüle
    Veritabanında gun olarak tablo açıp;
    SELECT * FROM banned WHERE ip='$ip' AND tarih < DATE_SUB(NOW(), INTERVAL '$gun')
    gun bölümüne 2 yaz veritabanında.
    uzun süre oldu php ile ilgilenmeyeli, bir denermisin.
    hocam denedim su cikiyor.

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/blabla/index.php on line 5
    4 ve 5 sira

    $bul = mysql_query("SELECT * FROM banned WHERE ip='$ip' AND tarih < DATE_SUB (NOW(), INTERVAL '$gun') ");
    $ban = mysql_fetch_array($bul);
  • 24-07-2009, 02:28:18
    #8
    Misafir
      SELECT * FROM banned WHERE ip='$ip' AND tarih < DATE_SUB(NOW(), INTERVAL gun='$gun')
    denermisin bi, buda olmazsa daha bilgisi olan arkadaşlar yardımcı olur.

    unutmuşum ben php'yi
  • 24-07-2009, 02:29:49
    #9
    Banlananların verilerini bir tabloda tut. Tabloda baslangic_tarihi, bitis_tarihi, ban_sebebi, uye_id gibi sütunlar olsun. Login esnasında bu tablodaki verilerle karşılaştır üye IDsini. Ban bitiş tarihi, şuandan büyükse login olmasına izin verme hatta vbulletin tarzı "şu sebepten dolayı şu tarihe kadar banlandınız" gibi bir mesaj yazdır ekrana. ban bitiş tarihi, şuandan küçükse mevcut girdiyi sil ban tablosundan.
    umarım anlatabilmişimdir.