XnCN
Banlanmış Üye
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:
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
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
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
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