Alexander-V-Sh Опубликовано 30 Декабря 2007 Жалоба Поделиться Опубликовано 30 Декабря 2007 (изменено) Когда пользователю дается предупреждение, то можно выставить: Заблокировать пользователя. Т.е. группа пользователя не Забаненный, но он не может видеть форум. Выскакиевает сообщение:Вы временно заблокированы. Дата и время разблокирования — дата Хочу тоже самое сделать на сайте, т.е. задать в юзверей форума запрос, и если заблокирован, то закрыть и сайт. Подскажите, пожалуйства, поле в табличке. Я как понял, это таблица members поле warn_level Где warn_level = 1. Это и есть блокированные. 2х заблокировал и у обоих в этом поле 1. Но смутило что поле int(10). Откуда тут могут быть такие числа (тут по смыслу или 1, или ничего...) Или могут? Т.е если сделаю,if ($warn_level == 1) {die ("You banned...");} Это оно и есть, или нужно не так?Заранее спасибо. Изменено 30 Декабря 2007 пользователем Alexander-V-Sh Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 30 Декабря 2007 Жалоба Поделиться Опубликовано 30 Декабря 2007 Отвечает за это следующий кусок из class_session.php: //----------------------------------------- // Check ban status //----------------------------------------- if ( $this->member['temp_ban'] ) { $ban_arr = $this->ipsclass->hdl_ban_line( $this->member['temp_ban'] ); if ( time() >= $ban_arr['date_end'] ) { //----------------------------------------- // Update this member's profile //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'update' => 'members', 'set' => "temp_ban=''", 'where' => "id=".$this->member['id'] ) ); $this->ipsclass->DB->simple_shutdown_exec(); } else { $this->ipsclass->member = $this->member; $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'account_susp', 'INIT' => 1, 'EXTRA' => $this->ipsclass->get_date($ban_arr['date_end'],'LONG', 1) ) ); } } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Alexander-V-Sh Опубликовано 30 Декабря 2007 Автор Жалоба Поделиться Опубликовано 30 Декабря 2007 Примерно понял что это за код, но я запрашивать буду с нюки, и дабы не випендриваться (если я правильно понял). То запрашиваю temp_ban, и если он не равен 0 или пусто, то редиктю на форум. А уж тут, после проверки, он или отбанится или выскочет предупреждение о сроке блокирования. Вроде верно все, тут либо пусто, либо ноль у нормальных и даты, у блокированных. Спасибо. А то мнетя не туда занесло, ошибся, когда банил для тесту, и получилось что по warn_level нужно проверять, что не есть правильно. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 31 Декабря 2007 Жалоба Поделиться Опубликовано 31 Декабря 2007 warn_level - это количество предупреждений.А temp_ban - это блокировка из панели модератора. Можно смотреть и temp_ban но важно понимать, что при просто увеличении предупреждений до максимума temp_ban сам не изменяется. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 31 Декабря 2007 Жалоба Поделиться Опубликовано 31 Декабря 2007 Да, и ещё. Наличие инфы в этом поле ещё не говорит о бане, возможно он уже прошёл(см. код выше). Так что лучше всё-таки проверять поле на сайте. Ещё можно проверять поля временного read-only и премодерации, смотрите их названия в warn*.php Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 1 Января 2008 Жалоба Поделиться Опубликовано 1 Января 2008 Да, и ещё. Наличие инфы в этом поле ещё не говорит о бане, возможно он уже прошёл(см. код выше). Так что лучше всё-таки проверять поле на сайте. Ещё можно проверять поля временного read-only и премодерации, смотрите их названия в warn*.phpSannis, если он прошёл там будет пусто. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 1 Января 2008 Жалоба Поделиться Опубликовано 1 Января 2008 Если он прошёл и после этого юзер не был на форуме, то там не будет пусто. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 2 Января 2008 Жалоба Поделиться Опубликовано 2 Января 2008 В таком случае можно считать что он всё ещё действует ) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 2 Января 2008 Жалоба Поделиться Опубликовано 2 Января 2008 У меня есть простенькая "смотрелка", показывает не только бан (временный и постоянный), но и ридонли с премодерациями:<?php require 'conf_global.php'; Error_Reporting(1+2+4+8); // Connect to the Database if (!($link = mysql_pconnect($INFO['sql_host'], $INFO['sql_user'], $INFO['sql_pass']))) { echo( sprintf( "Нет соединения С базой данных!", mysql_error() ) ); exit(); }; echo "<html><head><title>".$INFO['board_name']." => Кто в банке?</title></head><body><table border=1 align=center><tr><th>Ник</th><th>RO</th><th>Премодерация</th><th>Бан</th><th>Профиль</th></tr>"; function parse($val){ if($val==1){return 'Постоянно';} else{return $val;} } $query_messa= "SELECT id, name, restrict_post, mod_posts, temp_ban FROM `ibf_members` WHERE (restrict_post <>0 AND restrict_post <> 'NULL') or (mod_posts <>0 AND mod_posts <> 'NULL') or (temp_ban <>0 AND temp_ban <> 'NULL')"; if (!($result_messa = mysql_db_query($INFO['sql_database'], $query_messa))){ echo mysql_errno(), mysql_error(); return 0; } while($row_messa = mysql_fetch_array($result_messa)) { echo "<tr>"; echo "<td>"; echo $row_messa['name']; echo "</td>"; if($row_messa['restrict_post']==0 or $row_messa['restrict_post']=="NULL"){echo "<td> </td>";} else{echo "<td align=center>".parse($row_messa['restrict_post'])."</td>";}; if($row_messa['mod_posts']==0 or $row_messa['mod_posts']=="NULL"){echo "<td> </td>";} else{echo "<td align=center>".parse($row_messa['mod_posts'])."</td>";}; if($row_messa['temp_ban']==0 or $row_messa['temp_ban']=="NULL"){echo "<td> </td>";} else{echo "<td align=center>".parse($row_messa['temp_ban'])."</td>";}; echo "<td><a href='index.php?showuser=".$row_messa['id']."'>Посмотреть</a></td></tr>"; }; echo "</table></body></html>"; ?> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.