Проста бан система с 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"; ?>Еми това е. Урока работи перфектно и е тестван. Това е само прост скрипт, без защити, но според мен е доста ефикасен. Демо няма смисъл да давам, защото трябва да ви банвам подред.


