• Forum vBulletin altyapısından Xenforo altyapısına geçirildi, bu sebeple eski şifreleriniz ile foruma giriş yapamayacaksınız, parolamı unuttum adımından mailiniz ile şifre sıfırlayarak giriş yapabilirsiniz.

    Üyeliklerinde geçerli bir mail adresi olmadığı için sıfırlama yapamayacak kullanıcılar forum kullanıcı adlarını ve yeni şifrelerini yazarak info@maxigame.org adresine şifre sıfırlamak istediklerine dair bir mail göndersinler şifrelerini sıfırlayıp mail adreslerini güncelleyeceğiz. Şifreniz sıfırlandıktan sonra foruma giriş yapıp tekrar istediğiniz gibi değiştirebilirsiniz.

PHP + MySql IP Banlama Kodları

  • Konuyu başlatan Konuyu başlatan XnCN
  • Başlangıç tarihi Başlangıç tarihi

XnCN

Banlanmış Üye
Aktiflik
K.Tarihi
5 Tem 2009
Mesajlar
557
Puanı
236
Konum
Kocaeli/İzmit
i6368326_banner.png

Merhaba arkadaşlar bir script için geliştirdiğim IP Banlama scriptini sizinle paylaşmak istedim.Şimdi başlıyoruz. İlk olarak php bağlantımızı yapalım.

baglan.php


PHP:
<?php
///
$host="localhost";
$kullanici="root";
$sifre="";
$database="db";
///
$link = mysql_connect("$host", "$kullanici", "$sifre") or die(mysql_error());
$db = mysql_select_db("$database", $link) or die (mysql_error());
?>

Bağlatımızı hallettik şimdi geldi sıra .sql e.

ban.sql
Kod:​

PHP:
CREATE TABLE IF NOT EXISTS `ban` (  `ban_id` int(5) NOT NULL AUTO_INCREMENT,  `ban_ip` varchar(25) NOT NULL,  `saat` varchar(25) NOT NULL,  `tarih` varchar(25) NOT NULL,  PRIMARY KEY (`ban_id`),  UNIQUE KEY `ban_id` (`ban_id`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
.sql de hazır şimdi verileri gireceğimiz bir form yapmamız gerekiyor.

banla.php


PHP:
<?php
include('baglan.php');
$bancalistir = mysql_query("select * from ban  order by ban_id");
$kac=mysql_num_rows($bancalistir); //kaç tane banlı IP olduğuna bakıyoruz
echo "<div class='ban'><div style='float:left'>Toplam Banlı IP: </div>"; 
echo '<div><b>'.$kac.'</b></div></div><div class="clr"></div>'; //banlı IP sayısını yazdırıyoruz
while($banoku=mysql_fetch_assoc($bancalistir))
  {
  ?>
<div><div style="float:left"><strong>BAN ID</strong>: </div>
<div style="float:left"><?php echo $banoku['ban_id']; ?></div>
<div style="float:left"><strong>BANLI IP: </strong></div>
<div><?PHP echo $banoku['ban_ip']; ?></div></div>
<div class="clr"></div><div class="clr"></div>
  <?PHP } //while döngüsü ile ban id ve banlı IPleri yazdırdık
?><br />
<?php echo '<div>Ban atmak için IP numarasını gir.</div>
<div>Ban silmek için ID numarasını gir.</div>
'; ?>
<form name="ip_ban" method="get" action="banning.php" >
 <input type="text" name="ban_ip" />
<input type="submit" value="Banla" />
</form>
<form name="ip_ban_sil" method="get" action="banning.php" >
 <input type="text" name="ban_id_sil" />
<input type="submit" value="Ban Sil" />
</form>

şimdi veri girdik veya veri sildik. Scriptimiz her iki özelliğide kapsıyor. Ben metod olarak get kullandım isterseniz post olarak gerekli düzenlemeri siz yapabilirsiniz. Yönlendirme yaptığım banning.php ye bir bakalım.

banning.php


PHP:
<?php
include('baglan.php');
$ban_ip         = $_GET['ban_ip'];
$ban_id_sil         = $_GET['ban_id_sil'];
$saat         = date("H:i",(time()+0)); //bu seçenek değişebilir saat bazen Türkiye saatini göstermiyor olabilir ona göre 0 yerine 3600 (1saat) ekleyip yada çıkartabilirsiniz.
$tarih            = date("d.m.Y"); //tarih bilgilerini rakam olarak girer. örn: 13.08.2011
if ($ban_ip==0) { //buradaki mantık size kalmış o zaman daha az bilgiye sahiptim ve böyle bir mantıkla yol almışım
    echo  ""; }
    else {
$ban = mysql_query("insert into ban (ban_id, ban_ip, saat, tarih) values (NULL, '$ban_ip', '$saat', '$tarih')"); }
if ($ban_id_sil==0){ //buradaki mantık size kalmış o zaman daha az bilgiye sahiptim ve böyle bir mantıkla yol almışım
 echo ""; }
 else {
$bansil = mysql_query("delete from ban where ban_id='$ban_id_sil'");}
 
echo "Listeye Yönlendiriliyorsunuz...<meta http-equiv='refresh' content='3;URL=index.php' />"
?>

IPleri banladık yada banını sildik şimdi sırada ziyaretçi eğer banlandıysa ne olacak?

index.php


PHP:
<?php
include('baglan.php');
 
$ziyaretci_ip = $_SERVER['REMOTE_ADDR']; //bu ziyaretçi IPmiz. localhostta denerseniz gerçeği yansıtmayacaktır. örn:127.0.0.0 olarak gösterir
$kontrol=mysql_query("select * from ban where ban_ip='$ziyaretci_ip'"); //ziyaretçi IPmizin banlı olup olmadığını sorar
 
$ban_var_mi=mysql_num_rows($kontrol); //burda yaptığımız işlem sayma işlemidir. Eğer ban varsa sayım 1 veya fazla çıkacaktır.
if ($ban_var_mi >= 1) { 
echo 'Banlandınız'; }
else {
      echo 'Banlanmadınız.'; } ?>




ALINTIDIR
 
Geri
Üst