Как реализовать временный бан?
Делаешь в столбце таймстамп при создании автозаполнением, делаешь update столбца с true/false бана.
Дальше когда забаненный заходит на сайт посылаешь бек смотреть на поле автозаполненое с временем и сравниваешь с временем на сервере в данный момент.
$now = new DateTime(); // текущее время на сервере
$date = DateTime::createFromFormat("Y-m-d H:i", '2014-09-12 23:59'); // задаем дату в любом формате
$interval = $now->diff($date); // получаем разницу в виде объекта DateInterval
echo $interval->y, "\n"; // кол-во лет
echo $interval->d, "\n"; // кол-во дней
echo $interval->h, "\n"; // кол-во часов
echo $interval->i, "\n"; // кол-во минут
Отправляя юзера в бан записываем в таблицу его ID, и время разбана (текущее время + время бана)При каждом заходе на сайт (чат) юзер спрашивает у сервера: "Слыш, сервер, а я случайно не в бане?"Сервер смотрит ID юзера и сверяет его с табличными даннымиЕсли такой ID есть в таблице банов, то сервер смотрит сколько сейчас времени и сверяет его со временем разбанаЕсли текущее время меньше времени разбана, то сервер отвечает юзеру: "Да, ты в бане!"
Время естественно в секундах с начала эпохи Unix.