<?php
<p class="view_last">Пользователи</p>
$user = mysql_query("SELECT login,id FROM users ORDER BY login");//извлекаем логин и идентификатор пользователей
$user_mass = mysql_fetch_array($user);
do
{
printf("<p><a class='reg_user' href='profile.php?id=%s'>%s</a><a class='mes_del' href='ban_user.php?id=%s'<br></p>",$user_mass['id'],$user_mass['login'],$user_mass['id']);
}
while($user_mass = mysql_fetch_array($user));
ban_user.php
<?
$ip = getenv("HTTP_X_FORWARDED_FOR");
if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }
mysql_query ("DELETE FROM `user_ban` WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 2073600");
$result = mysql_query("SELECT ban FROM `user_ban` WHERE ip='$ip'");
$myrow = mysql_fetch_array($result);
if ($myrow['ban'] > 0) {
exit("Вы забанены!"."<html><head><meta http-equiv='Refresh' content='3; URL=index.php'></head><body></body></html>");
$myrow2 = mysql_fetch_array($result2);
if (empty($myrow2['id']))
{
mysql_query ("INSERT INTO `user_ban` (ip,date,col) VALUES ('$ip',NOW(),'1')");
}
exit ("Извините, Вы забанены^^"."<html><head><meta http-equiv='Refresh' content='2; URL=index.php'></head><body></body></html>");
}
?>
Будет ли работать такая система? Что не так если что?

Спустя 20 минут, 15 секунд (20.09.2010 - 15:20) waldicom написал(а):
Почему getenv(), а не $_SERVER ?
Спустя 5 минут, 16 секунд (20.09.2010 - 15:25) Onehp написал(а):
waldicom, IP получить, а что с суперглоб., быстрее работать будет?
Спустя 4 минуты, 55 секунд (20.09.2010 - 15:30) Ser18 написал(а):
А есть смысл банить по ip? Он ведь при каждом подключении к интернету меняется
Спустя 58 секунд (20.09.2010 - 15:31) Onehp написал(а):
ну вообще работать будет нет?
Разве не IP компа будет вводится в базу?

Спустя 53 минуты, 12 секунд (20.09.2010 - 16:25) Ser18 написал(а):
Я бы так написал
1 - забанен
0 - не забанен
Сначала запрос в БД на замену 1 на 0 если срок бана истек
$user = mysql_query("SELECT login, id, user_ban FROM users ");
while ($user_mass = mysql_fetch_array($user)) {
if($user_mass['user_ban']==1) {
echo $user_mass['login']." Забанен";
}
if($user_mass['user_ban']==0) {
echo $user_mass['login']." Не забанен"
}
}
А по поводу ip на сколько я знаю он выдается компьютеру на время подключения к интернету
1 - забанен
0 - не забанен
Сначала запрос в БД на замену 1 на 0 если срок бана истек
$user = mysql_query("SELECT login, id, user_ban FROM users ");
while ($user_mass = mysql_fetch_array($user)) {
if($user_mass['user_ban']==1) {
echo $user_mass['login']." Забанен";
}
if($user_mass['user_ban']==0) {
echo $user_mass['login']." Не забанен"
}
}
А по поводу ip на сколько я знаю он выдается компьютеру на время подключения к интернету
Спустя 52 минуты, 37 секунд (20.09.2010 - 17:17) inpost написал(а):
Onehp
Почему нельзя банить по IP:
1. Компьютерная сеть для целой фирмы имеет один IP.
2. Несколько человек могут сидеть с одного IP. И мама, и маленький 12-летний троль.
3. У таких как я IP каждый раз меняется, заходя в интернет.
4. Кому надо - подменят IP за минуту.
5. IP достаточно ограничено, и если я правильно понял учебник, то в теории может возникнуть так, что несколько разных компьютеров могут иметь один и тот же ай-пи.
Почему нельзя банить по IP:
1. Компьютерная сеть для целой фирмы имеет один IP.
2. Несколько человек могут сидеть с одного IP. И мама, и маленький 12-летний троль.
3. У таких как я IP каждый раз меняется, заходя в интернет.
4. Кому надо - подменят IP за минуту.
5. IP достаточно ограничено, и если я правильно понял учебник, то в теории может возникнуть так, что несколько разных компьютеров могут иметь один и тот же ай-пи.
Спустя 1 час, 13 минут, 26 секунд (20.09.2010 - 18:31) Onehp написал(а):
inpost
Ясно спасиб, понял
Ser18
можешь помочь код подредактировать?
Ясно спасиб, понял
Ser18
можешь помочь код подредактировать?

Спустя 5 минут, 17 секунд (20.09.2010 - 18:36) Ser18 написал(а):
А что именно помочь?
Спустя 3 минуты, 29 секунд (20.09.2010 - 18:39) Onehp написал(а):
Ser18
Мой код переделать как ты написал, а то если я просто так напишу не получится
я не могу понять как сделать, типо если 0 не в бане если нажата кнопка забанить то забанить на 1 день или там на сколько нибудь
Мой код переделать как ты написал, а то если я просто так напишу не получится


Спустя 8 минут, 37 секунд (20.09.2010 - 18:48) Ser18 написал(а):
Что у вас не разрешается забаненому пользователю?
Писать сообщения
Авторизоваться
Или еще что то
0 - записывается в таблицу users, колонка user_ban при регистрации пользователя
1 - перезаписываете user_ban ставя пользователю бан
Писать сообщения
Авторизоваться
Или еще что то
0 - записывается в таблицу users, колонка user_ban при регистрации пользователя
1 - перезаписываете user_ban ставя пользователю бан
Спустя 6 минут, 43 секунды (20.09.2010 - 18:55) Onehp написал(а):
Ser18, просто заходить на сайт в течении суток, ну в смысле под своим логином
Это как допустим если ты не верно ввел логин 3 раза то иди отдыхай какое то время


Спустя 2 минуты, 13 секунд (20.09.2010 - 18:57) inpost написал(а):
Onehp
Есть таблица Users, добавь в неё ещё одно поле (status). И если 0 - то пользователь забанен, если 1 - то нет.
Есть таблица Users, добавь в неё ещё одно поле (status). И если 0 - то пользователь забанен, если 1 - то нет.
Спустя 8 минут, 11 секунд (20.09.2010 - 19:05) Onehp написал(а):
inpost, а как реализовать что бы если 0 то бан? 
типо так?
Если (нажата кнопка забанить) {(то в таблице бан в поле статус поставить 0 где ид=$ид(выше $ид=логин узера)) и время бана;}
иначе
{все норм;}
как это реализовать на языке пыхыпы?
можете просто функциями помочь, пожалуйста

типо так?
Если (нажата кнопка забанить) {(то в таблице бан в поле статус поставить 0 где ид=$ид(выше $ид=логин узера)) и время бана;}
иначе
{все норм;}
как это реализовать на языке пыхыпы?

можете просто функциями помочь, пожалуйста

Спустя 2 минуты, 3 секунды (20.09.2010 - 19:07) Ser18 написал(а):
Так если он 3 раза неправильно ввел логи, банить то некого, если только ip
а это бессмысленно
а это бессмысленно
Спустя 1 минута, 47 секунд (20.09.2010 - 19:09) Onehp написал(а):
Ser18
не не я просто пример привел
не не я просто пример привел

Спустя 9 минут, 17 секунд (20.09.2010 - 19:18) inpost написал(а):
Onehp
За тебя никто писать, увы, не будет! Делать прийдется тебе...
За тебя никто писать, увы, не будет! Делать прийдется тебе...
Спустя 4 минуты, 36 секунд (20.09.2010 - 19:23) Onehp написал(а):
inpost
попробую, проверите?
попробую, проверите?

Спустя 10 минут, 49 секунд (20.09.2010 - 19:34) inpost написал(а):
Onehp
Конечно! Если получатся не будет - тогда обращайся)
Конечно! Если получатся не будет - тогда обращайся)
Спустя 39 минут, 10 секунд (20.09.2010 - 20:13) Onehp написал(а):
Вот набросал

<?php
if (isset ($_POST['ban'])) {$ban = $_POST['ban'];}
$ban = getenv("HTTP_X_FORWARDED_FOR");
if (empty($ban))
{
$ban=getenv("REMOTE_ADDR");
("INSERT INTO `user_ban` (id,date,status) VALUES ('$id',NOW(),'1')");
}
mysql_query ("DELETE FROM `user_ban` WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 2073600");
$result = mysql_query("SELECT status FROM `user_ban` WHERE id='$id'");
$myrow = mysql_fetch_array($result);
if ($myrow['status'] = 1)
{
exit("Вы забанены!"."<html><head><meta http-equiv='Refresh' content='3; URL=index.php'></head><body></body></html>");}
Спустя 1 час, 25 минут, 40 секунд (20.09.2010 - 21:38) Ser18 написал(а):
// Когда баним записываем дату так в таблицу users колонка data_ban
$data_ban = date("Y-m-d",time()+(1*(24*60*60)));// Прибавляем к сегоднешней даты 1 днь
//Бан при котором нельзя авторизоваться
$data = date("Y-m-d"); //Сегодняшняя дата
$result = mysql_query("SELECT login, user_ban, data_ban FROM users WHERE login ='{$_POST['login']}'");
$myrow = mysql_fetch_array($result);
// Если пользователь забанен и дата его разбана уже наступила то разбанивам его меняя 1 на 0
if($myrow['user_ban'] == 1 and $myrow['data_ban'] >= $data) {
$a = 0;
mysql_query("UPDATE users SET user_ban = '$a' WHERE login = '{$_POST['login']}'");
}
// Потом
$result2 = mysql_query("SELECT id, ligin, password, user_ban, data_ban FROM users WHERE login ='{$_POST['login']}'");
$myrow2 = mysql_fetch_array($result2);
if($myrow2['user_ban'] == 1) {
exit('Вы забанены');
}
Я так не далал
Возможно что то не правилно
Но раз никто не пишет
Спустя 1 день, 15 часов, 47 минут, 5 секунд (22.09.2010 - 13:26) Onehp написал(а):
ни канает
, даже если сам 1 поставлю не канает

Спустя 11 минут, 58 секунд (22.09.2010 - 13:37) inpost написал(а):
Ser18
$a можно не создавать, а непосредственно в БД добавлять 0.
На первый взгляд вроде все правильно записано, хотя опечатки: "ligin".
Внимательнее надо быть!
Даты сравни отдельно, правильно ли ты делаешь проверь! И вообще, что именно не работает? Даты не сравниваются, обращение к БД не идёт? Выборка? Укажи точную причину
$a можно не создавать, а непосредственно в БД добавлять 0.
На первый взгляд вроде все правильно записано, хотя опечатки: "ligin".
Внимательнее надо быть!
Даты сравни отдельно, правильно ли ты делаешь проверь! И вообще, что именно не работает? Даты не сравниваются, обращение к БД не идёт? Выборка? Укажи точную причину
Спустя 5 минут (22.09.2010 - 13:42) Onehp написал(а):
Опечатки поправил, да, не идет в бд получается, потому что как было 0 так и стоит 0, даже если в ручную на ноль поменять то ничего не измениться (видемо дата тоже не работает)
Спустя 4 минуты, 29 секунд (22.09.2010 - 13:47) inpost написал(а):
Onehp
Так 0 - это нормально, ты же писал, что бан - 1, значит и реакция должна быть именно на 1.
Ты не пиши весь код целиком, ты каждую часть в отдельности проверяй.
Вот скрипт, где-то в середине поставь exit(); перед этим выведи через echo полученные данные на данный момент! Посмотри, правильно ли отобразились! Пройди дальше, опять exit и смотри на данные полученные! И так шаг за шагом.
Так 0 - это нормально, ты же писал, что бан - 1, значит и реакция должна быть именно на 1.
Ты не пиши весь код целиком, ты каждую часть в отдельности проверяй.
Вот скрипт, где-то в середине поставь exit(); перед этим выведи через echo полученные данные на данный момент! Посмотри, правильно ли отобразились! Пройди дальше, опять exit и смотри на данные полученные! И так шаг за шагом.
Спустя 2 минуты, 24 секунды (22.09.2010 - 13:49) Onehp написал(а):
ой ой опечатался, то есть если поставить 1
щас попробую
