Чат - код за забрана

pr0_gamer

Registered
Здравейте! Имам чат и искам да му добавя едно свойство. Свойство да забранява на даден юзър да пише да определено време. Например, ако Администратор напише в чата: "/zabrani username1 10" да забрани на username1 да пише за 10 минути и като изтекат тези 10 минути отново да може да пише. Възможно ли е това да стане и как по-точно?

Благодаря на всеки отзовал се!
 
Лично аз се сещам за следния метод,но ще трябват модификации по системата.
Ще трябва да направиш таблица с име bans например.Вътре слагаш две полета-IP и time.
Чрез explode разделяш израза на няколко части.Проверяваш дали първата дума в дадено написано съобщение е /zabrani и след това .Ще трябва да добавиш и нещо като парола за да може това да не се прави от всички.Примерно си правиш една променлива с име $adminpass и в нея си пишеш паролата.След като си разделил израза правиш проверка дали въведената парола съвпада с тази,зададена от теб.
Чрез селект взимаш последното написано нещо от дадения потребител и по-точно ip адресът.на time ще напишеш следното:
Код:
time()+$vremeto*60
Като $vremeto са ти броя на минутите.Добавяш IPто и времето в таблицата bans.След това правиш проверка дали даденото IP го има в базата данни и дали time() е по-голямо от стойноста в базата данни.Ако е така извеждаш съобщение,че не може временно да се пише.
Това е начинът с най-малко промени.Поне аз за друг не се сещам.
 
Разбрах почти всичко освен методът с explode. Не съм работил с него... би ли ми разяснил малко или да ми дадеш примерен код как трябва да стане разделянето на части?
 
Примерно ако ще се изпълнява така командата:

/zabrani username1 10 adminpassword

С explode-то ще стане така.

$message = $_POST['полето'];
$ex = explode(" ",$message);
$password = "123456"; // твоята парола.
$getpass = $ex['3']; // взимаме написаната парола.
if ($getpass == $password)
{
$potrebitel = $ex['1']; // взимаме написаното име.
$zavreme = $ex['2']; // взимаме написаното време.
// тук вече кода за забраната.
}
else
{
echo "Нямате достъп до тази команда.";
}
 
http://docs.php.net/manual/bg/function.explode.php :?:
Ако приемем,че бан функцията ни ще изглежда така
/zabrani username 10 parolata
правиш си една променлива да кажем $banmsg която да е равна на
Код:
explode(' ', $msg);
Тоест разделяш отделните думи.Чрез първия параметър на функцията сме казали да разделя където има интервал,а втория параметър определя кое да разделя.И сега Ако например искаш да провериш,дали първата дума е /zabrani правиш така
Код:
if($banmsg[0] == '/zabrani'){
//някъкъв код
}
За потребителското име ще ти трябва $banmsg[1], за времето $banmsg[2],а за паролата $banmsg[3].
Eдит:не видях,че proba ме е изпреварил :?:
 
Направих го на 99 %...

Обаче изникна един проблем... Нещо съм объркал в заявките защото никой юзър не може да чати когато друг е блокиран...
@Harry_Potter_ - вместо IP в БД го смених с никнейма, който да се блокирва.

Нещо не мога да го направя както трябва...

EDIT: Оправих се. Само още една услуга, ако може и ти давам точка... Вместо въвеждане на парола да може само определен ранг потребители да използват опцията... Как ще стане?
 
Още един едит...

Направих го само на определени рангове да изпълнява заявката, но инсъртва написаното "/zabrani 5 username" и в чата. Как да го отстраня това?
 
$msgid = $row['id'];
// трябва да вземеш id-то на съобщението.

$message = $row['поле'];
// или както там извеждаш съобщението.

if (preg_match("//zabrani", $message)
{
mysql_query("DELETE * FROM таблица WHERE id='$id'") or die(mysql_error());
}

Пробвай така.
 
Ъъъ... има едит бутон. Дай някакъв код за потребителя. А за съобщенията, сложи едно поле skrit в таблицата, и на тези който започват с това, което желаеш, сложи да се скрива в отделен див.
 
Правиш така
Код:
if($banmsg[0] == '/zabrani'){
//Изпълняване на бан заявката без заявката за добавяне в чатът.
} 
else{
//Скриптът за добавяне в чатът.
}
А иначе примерът с IP ти го дадох защото е по-надежден.Например нищо не пречи потребител да затвори чатът и да влезне с друго име.
 

Back
Горе