Denis97832 Опубликовано 28 марта, 2015 Поделиться Опубликовано 28 марта, 2015 (изменено) Вот к меня есть скрипт бана, но я как только его не менял ничего не получается. Помогите сделать чтоб переходя по ссылке можно было банить пользователя по логину, а не по id как в этом скрипте и убрать все лишнее<?include_once '../sys/inc/start.php';include_once '../sys/inc/compress.php';include_once '../sys/inc/sess.php';include_once '../sys/inc/home.php';include_once '../sys/inc/settings.php';include_once '../sys/inc/db_connect.php';include_once '../sys/inc/ipua.php';include_once '../sys/inc/fnc.php';include_once '../sys/inc/adm_check.php';include_once '../sys/inc/user.php'; if (!user_access('user_ban_set') && !user_access('user_ban_set_h') && !user_access('user_ban_unset')){header("Location: /index.php?".SID);exit;} adm_check();if (isset($_GET['id']))$ank['id']=intval($_GET['id']);else {header("Location: /index.php?".SID);exit;} if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `id` = '$ank[id]' LIMIT 1"),0)==0){header("Location: /index.php?".SID);exit;}$ank=get_user($ank['id']);if ($user['level']<=$ank['level']){header("Location: /index.php?".SID);exit;} $set['title']='Бан пользователя '.$ank['nick'];include_once '../sys/inc/thead.php';title(); if (isset($_GET['unset']) && mysql_result(mysql_query("SELECT COUNT(*) FROM `ban` WHERE `id_user` = '$ank[id]' AND `id` = '".intval($_GET['unset'])."'"),0) && user_access('user_ban_unset')){$ban_info=mysql_fetch_assoc(mysql_query("SELECT * FROM `ban` WHERE `id_user` = '$ank[id]' AND `id` = '".intval($_GET['unset'])."'"));$ank2=mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `id` = '$ban_info[id_ban]' LIMIT 1"));if (($user['level']>$ank2['level'] || $user['id']==$ank2['id']) || $user['level']==4){mysql_query("UPDATE `ban` SET `time` = '$time' WHERE `id` = '".intval($_GET['unset'])."' LIMIT 1");admin_log('Пользователи','Бан',"Снятие бана пользователя '[url=/amd_panel/ban.php?id=$ank[id]]$ank[nick][/url]'");msg('Время бана обнулено');}else$err[]='Нет прав';} if (isset($_POST['ban_pr']) && isset($_POST['time']) && isset($_POST['vremja']) && (user_access('user_ban_set') || user_access('user_ban_set_h'))){$timeban=$time;if ($_POST['vremja']=='min')$timeban+=intval($_POST['time'])*60;if ($_POST['vremja']=='chas')$timeban+=intval($_POST['time'])*60*60;if ($_POST['vremja']=='sut')$timeban+=intval($_POST['time'])*60*60*24;if ($_POST['vremja']=='mes')$timeban+=intval($_POST['time'])*60*60*24*30;if ($timeban<$time)$err[]='Ошибка времени бана'; if (!user_access('user_ban_set'))$timeban=min($timeban, $time+3600*24); $prich=$_POST['ban_pr'];if (strlen2($prich)>1024){$err[]='Сообщение слишком длинное';}if (strlen2($prich)<10){$err[]='Необходимо подробнее указать причину';}$prich=my_esc($prich);if (!isset($err)){mysql_query("INSERT INTO `ban` (`id_user`, `id_ban`, `prich`, `time`) VALUES ('$ank[id]', '$user[id]', '$prich', '$timeban')");admin_log('Пользователи','Бан',"Бан пользователя '[url=/adm_panel/ban.php?id=$ank[id]]$ank[nick][/url]' до ".vremja($timeban)." по причине '$prich'");msg('Пользователь успешно забанен');}} err();aut(); $k_post=mysql_result(mysql_query("SELECT COUNT(*) FROM `ban` WHERE `id_user` = '$ank[id]'"),0);$k_page=k_page($k_post,$set['p_str']);$page=page($k_page);$start=$set['p_str']*$page-$set['p_str'];echo "<table class='post'>\n"; if ($k_post==0){echo " <tr>\n";echo " <td class='p_t'>\n";echo "Нет нарушений\n";echo " </td>\n";echo " </tr>\n";} $q=mysql_query("SELECT * FROM `ban` WHERE `id_user` = '$ank[id]' ORDER BY `time` DESC LIMIT $start, $set[p_str]");while ($post = mysql_fetch_assoc($q)){ $ank2=mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `id` = $post[id_ban] LIMIT 1"));echo " <tr>\n";if ($set['set_show_icon']==2){echo " <td class='icon48' rowspan='2'>\n";avatar($ank2['id']);echo " </td>\n";}elseif ($set['set_show_icon']==1){echo " <td class='icon14'>\n";echo "<img src='/style/themes/$set[set_them]/user/$ank2[pol].png' alt='' />";echo " </td>\n";}echo " <td class='p_t'>\n";echo "<a href='/info.php?id=$ank2[id]'>$ank2[nick]</a>".online($ank2['id']).": до ".vremja($post['time'])."\n"; echo " </td>\n";echo " </tr>\n";echo " <tr>\n";if ($set['set_show_icon']==1)echo " <td class='p_m' colspan='2'>\n"; else echo " <td class='p_m'>\n";echo esc(trim(br(bbcode(smiles(links(stripcslashes(htmlspecialchars($post['prich']))))))))."<br />\n";if ($post['time']>$time && user_access('user_ban_unset'))echo "<a href='?id=$ank[id]&unset=$post[id]'>Снять бан</a><br />\n";echo " </td>\n";echo " </tr>\n";} echo "</table>\n";if ($k_page>1)str('?id='.$ank['id'].'&',$k_page,$page); // Вывод страниц if (user_access('user_ban_set') || user_access('user_ban_set_h')){echo "<form action=\"ban.php?id=$ank[id]&$passgen\" method=\"post\">\n";echo "Причина:<br />\n";echo "<textarea name=\"ban_pr\"></textarea><br />\n";echo "Время бана ".(user_access('user_ban_set')?null:'(max 1 сутки)').":<br />\n";echo "<input type='text' name='time' title='Время бана' value='10' maxlength='11' size='3' />\n";echo "<select class='form' name=\"vremja\">\n";echo "<option value='min'>Минуты</option>\n";echo "<option ".(($k_post>1)?'selected="selected" ':null)."value='chas'>Часы</option>\n";echo "<option value='sut'>Сутки</option>\n";echo "<option value='mes'".(user_access('user_ban_set')?null:' disabled="disabled"').">Месяцы</option>\n";echo "</select><br />\n";echo "<input type='submit' value='Забанить' />\n";echo "</form>\n";}else{echo "<div class='err'>Нет прав для того, чтобы забанить пользователя</div>\n";} echo "<div class='foot'>\n";echo "»<a href=\"/mail.php?id=$ank[id]\">Написать сообщение</a><br />\n";echo "«<a href=\"/info.php?id=$ank[id]\">В анкету</a><br />\n";if (user_access('adm_panel_show'))echo "«<a href='/adm_panel/'>В админку</a><br />\n";echo "</div>\n"; include_once '../sys/inc/tfoot.php';?> Изменено 28 марта, 2015 пользователем Denis97832 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 28 марта, 2015 Поделиться Опубликовано 28 марта, 2015 При текущей структуре таблицы: id_user | id_ban | prich | time |--------------------------------------------------Забанить пользователя по логину не получится, если система настроена на проверку бана по ID пользователя, а изменить - легко.Переименовываешь колонку "id_user", например, в "username".Удаляешь колонку "id_ban"Изменяешь код бана, на этот:...mysql_query("INSERT INTO `ban` (`username`, `prich`, `time`) VALUES ('$user[nick]', '$prich', '$timeban')");...Но тогда тебя ждет несколько неприятных моментов:Банится пользователь по имени, а это значит, что смена ника у пользователя равно автоматическому разбану.Придется править весь остальной код, который работает с ID забаненного пользователя.Это, конечно, если я правильно понял твой вопрос. Ссылка на комментарий Поделиться на другие сайты Поделиться
Denis97832 Опубликовано 29 марта, 2015 Автор Поделиться Опубликовано 29 марта, 2015 При текущей структуре таблицы:id_user | id_ban | prich | time |--------------------------------------------------Забанить пользователя по логину не получится, если система настроена на проверку бана по ID пользователя, а изменить - легко.Переименовываешь колонку "id_user", например, в "username".Удаляешь колонку "id_ban"Изменяешь код бана, на этот:...mysql_query("INSERT INTO `ban` (`username`, `prich`, `time`) VALUES ('$user[nick]', '$prich', '$timeban')");...Но тогда тебя ждет несколько неприятных моментов:Банится пользователь по имени, а это значит, что смена ника у пользователя равно автоматическому разбану.Придется править весь остальной код, который работает с ID забаненного пользователя.Это, конечно, если я правильно понял твой вопрос.Нифига) Спасибо большое) Как можно сделать чтоб доступ к странице где можно банить имел каждый заходящий по этому адресу? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 29 марта, 2015 Поделиться Опубликовано 29 марта, 2015 Как можно сделать чтоб доступ к странице где можно банить имел каждый заходящий по этому адресу?Да легко, убери из кода эту строчку:if (!user_access('user_ban_set') && !user_access('user_ban_set_h') && !user_access('user_ban_unset')){header("Location: /index.php?".SID);exit;}И, возможно еще придется убрать и эти:adm_check();if (isset($_GET['id']))$ank['id']=intval($_GET['id']);else {header("Location: /index.php?".SID);exit;}Что они делают - непонятно, т.к. первой строчкой "adm_check()" - видимо, стоит проверка, является-ли пользователь администратором, а остальные - какая-то проверка ID, видимо, проверка связана с "adm_check()". Точно сказать не могу, т.к. всего кода не видел. Попробуй сам просмотреть, что код делает. Ссылка на комментарий Поделиться на другие сайты Поделиться
Denis97832 Опубликовано 30 марта, 2015 Автор Поделиться Опубликовано 30 марта, 2015 Да легко, убери из кода эту строчку:if (!user_access('user_ban_set') && !user_access('user_ban_set_h') && !user_access('user_ban_unset')){header("Location: /index.php?".SID);exit;}И, возможно еще придется убрать и эти:adm_check();if (isset($_GET['id']))$ank['id']=intval($_GET['id']);else {header("Location: /index.php?".SID);exit;}Что они делают - непонятно, т.к. первой строчкой "adm_check()" - видимо, стоит проверка, является-ли пользователь администратором, а остальные - какая-то проверка ID, видимо, проверка связана с "adm_check()". Точно сказать не могу, т.к. всего кода не видел. Попробуй сам просмотреть, что код делает.Спасибо Вам! На выходных попробую и отпишусь) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения