Webmaster общности: Predpriemach.com | SearchEngines.bg

    Проста бан система с MySQL

    Автор: nogravity

    Здравейте! В последно време виждам, че на много хора им трябва бан система с извеждане на причина за бана и затова реших да напиша една простичка системка, използваща MySQL.
    Ами да започваме! Ето първо SQL кода на таблицата:

    CREATE TABLE `bans` (
    `id` int(11) NOT NULL auto_increment,
    `ip` varchar(33) NOT NULL,
    `reason` varchar(255) character set cp1251 collate cp1251_bulgarian_ci NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM ;

    Така, сега преминаваме към php кода. Ето първия файл – addban.php:

    <form action="" method="POST">
    IP: <input type="text" name="ip"><br />
    Причина: <input type="text" name="reason"><br />
    <input type="submit" name="submit" value="Банни!">
    </form>
    <?php
    include "config.php";
    if (isset($_POST['submit'])) {
    $ip = $_POST['ip'];
    if ($_POST['reason'] == NULL) {
    $reason = "Няма причина!";
    }
    else {
    $reason = $_POST['reason'];
    }
    $select = mysql_query("SELECT * FROM bans WHERE ip='$ip'") or die(mysql_error());
    $broi = mysql_num_rows($select);
    if ($broi>0) {
    echo "ИП-то: <b>$ip</b> вече същестува в базата данни!";
    }
    else if ($ip == NULL) {
    echo 'Моля въведете ИП!';
    }
    else {
    $add = "INSERT INTO `bans` (`id`, `ip`, `reason`) VALUES('NULL', '$ip', '$reason')";
    if (mysql_query($add) != "") {
    echo "Успешно баннахте ИП: <b>$ip</b>!";
    }
    else {
    echo "Грешка 1";
    }
    }
    }
    ?>

    Продължаваме с файла viewbans.php. С него ще можем да разглеждаме всички добавени банове:

    <table align="center" border="1">
    <tr><td align="center"><b>ID</b></td><td align="center"><b>IP</b></td><td align="center"><b>Причина</b></td><td align="center"><b>Махни</b></td></tr>
    <?php
    include "config.php";
    $sql = mysql_query("SELECT * FROM bans ORDER BY id") or die(mysql_error());
    while($row = mysql_fetch_array($sql)) {
    $id = $row['id'];
    $ip = $row['ip'];
    $reason = $row['reason'];
    echo "<tr><td>$id</td><td>$ip</td><td>$reason</td><td><a href='delban.php?id=$id'>Махни</a></td></tr>";
    }
    ?>
    </table>

    Сега идва кода за файла delban.php, който както виждате по името ще изтрива бана от базата данни:

    <?php
    $id = $_GET['id'];
    if(!$id) {
    echo 'Моля изберете потребител, на когото искате да махнете бана!';
    }
    else {
    $delete = mysql_query("DELETE FROM `bans` WHERE id='$id'") or die(mysql_error());
    if($delete == true) {
    echo 'Успешно махнахте бана на потребителя!';
    echo '<meta http-equiv="refresh" content="1;url=viewbans.php">';
    }
    }
    ?>

    Следва файла ban.php, който служи за проверяването дали даденото IP е във базата данни и ако това е така да изкарва съобщение, а ако не да изкарва вашия код. Ето го и него:

    <?php
    include "config.php";
    $ip = $_SERVER['REMOTE_ADDR'];
    $db = mysql_query("SELECT * FROM bans WHERE ip = '$ip'") or die(mysql_error());
    $num = mysql_num_rows($db);
    if ($num > 0) {
    while ($row = mysql_fetch_array($db)) {
    $reason = $row['reason'];
    echo "Вие имате БАН от сайта!<br /><u>Причина:</u> $reason";
    exit;
    }
    }
    else {
    }
    ?>

    И накрая естествено не може без config.php

    <?php
    $user = "името на потребителя";
    $pass = "парола на потребителя";
    $db = "базата данни";
    $host = "localhost";
    $connection = mysql_connect("$host", "$user", "$pass") or die("Грешка 1");
    $db = mysql_select_db("$db",$connection)or die("Грешка 2");
    mysql_query('set names cp1251');
    ?>

    Сега на страниците, където искате банатите потребители да не могат да ги виждат, просто добавете най-отгоре (дори над html кода) този php код:

    <?php include "пътя до файла/ban.php"; ?>

    Еми това е. Урока работи перфектно и е тестван. Това е само прост скрипт, без защити, но според мен е доста ефикасен. Демо няма смисъл да давам, защото трябва да ви банвам подред.

    Оставете коментар