Проста бан система с MySQL
Здравейте! В последно време виждам, че на много хора им трябва бан система с извеждане на причина за бана и затова реших да напиша една простичка системка, използваща 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"; ?>


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






/ Трябва да сте регистриран за да напишете коментар /
От: kickme
23:33 24-10-2010
Браво системата работи перфектно
От: M1tq
16:36 31-10-2010
а как да взема .. IP-то
От: MiMo94
11:43 14-01-2011
Браво но има малка грешка в delban.php не е сложено
include("config.php");
и следователно кода трябва да е така на файла delban.php

От: MiMo94
11:43 14-01-2011
include("config.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 '';
}
}
От: gotiniq9084
11:50 06-03-2011
Да благодаря MiMo94 така както каза вече стана. :)
От: unlimed
23:36 29-07-2011
Не може да маха баннове!
1