PUN_MOD || ($pun_user['g_id'] == PUN_MOD && $pun_config['p_mod_ban_users'] == '0')) message($lang_common['No permission']); // Add/edit a ban (stage 1) if (isset($_REQUEST['add_ban']) || isset($_GET['edit_ban'])) { if (isset($_GET['add_ban']) || isset($_POST['add_ban'])) { // If the id of the user to ban was provided through GET (a link from profile.php) if (isset($_GET['add_ban'])) { $add_ban = intval($_GET['add_ban']); if ($add_ban < 2) message($lang_common['Bad request']); $user_id = $add_ban; $result = $db->query('SELECT group_id, username, email FROM '.$db->prefix.'users WHERE id='.$user_id) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error()); if ($db->num_rows($result)) list($group_id, $ban_user, $ban_email) = $db->fetch_row($result); else message('No user by that ID registered.'); } else // Otherwise the username is in POST { $ban_user = trim($_POST['new_ban_user']); if ($ban_user != '') { $result = $db->query('SELECT id, group_id, username, email FROM '.$db->prefix.'users WHERE username=\''.$db->escape($ban_user).'\' AND id>1') or error('Unable to fetch user info', __FILE__, __LINE__, $db->error()); if ($db->num_rows($result)) list($user_id, $group_id, $ban_user, $ban_email) = $db->fetch_row($result); else message('No user by that username registered. If you want to add a ban not tied to a specific username just leave the username blank.'); } } // Make sure we're not banning an admin if (isset($group_id) && $group_id == PUN_ADMIN) message('The user '.pun_htmlspecialchars($ban_user).' is an administrator and can\'t be banned. If you want to ban an administrator, you must first demote him/her to moderator or user.'); // If we have a $user_id, we can try to find the last known IP of that user if (isset($user_id)) { $result = $db->query('SELECT poster_ip FROM '.$db->prefix.'posts WHERE poster_id='.$user_id.' ORDER BY posted DESC LIMIT 1') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error()); $ban_ip = ($db->num_rows($result)) ? $db->result($result) : ''; } $mode = 'add'; } else // We are editing a ban { $ban_id = intval($_GET['edit_ban']); if ($ban_id < 1) message($lang_common['Bad request']); $result = $db->query('SELECT username, ip, email, message, expire FROM '.$db->prefix.'bans WHERE id='.$ban_id) or error('Unable to fetch ban info', __FILE__, __LINE__, $db->error()); if ($db->num_rows($result)) list($ban_user, $ban_ip, $ban_email, $ban_message, $ban_expire) = $db->fetch_row($result); else message($lang_common['Bad request']); $ban_expire = ($ban_expire != '') ? date('Y-m-d', $ban_expire) : ''; $mode = 'edit'; } $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Bans'; $focus_element = array('bans2', 'ban_user'); require PUN_ROOT.'header.php'; generate_admin_menu('bans'); ?>

Ban advanced settings

Supplement ban with IP and e-mail
Username The username to ban.
IP-adresses The IP or IP-ranges you wish to ban (e.g. 150.11.110.1 or 150.11.110). Separate addresses with spaces. If an IP is entered already it is the last known IP of this user in the database.here to see IP statistics for this user.' ?>
E-mail/domain The e-mail or e-mail domain you wish to ban (e.g. someone@somewhere.com or somewhere.com). See "Allow banned e-mail addresses" in Options for more info.

You should be very careful when banning an IP-range because of the possibility of multiple users matching the same partial IP.

Ban message and expiry
Ban message A message that will be displayed to the banned user when he/she visits the forums.
Expire date The date when this ban should be automatically removed (format: YYYY-MM-DD). Leave blank to remove manually.

1) ? ltrim($octets[$c], "0") : $octets[$c]; if ($c > 3 || preg_match('/[^0-9]/', $octets[$c]) || intval($octets[$c]) > 255) message('You entered an invalid IP/IP-range.'); } $cur_address = implode('.', $octets); $addresses[$i] = $cur_address; } $ban_ip = implode(' ', $addresses); } require PUN_ROOT.'include/email.php'; if ($ban_email != '' && !is_valid_email($ban_email)) { if (!preg_match('/^[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/', $ban_email)) message('The e-mail address (e.g. user@domain.com) or partial e-mail address domain (e.g. domain.com) you entered is invalid.'); } if ($ban_expire != '' && $ban_expire != 'Never') { $ban_expire = strtotime($ban_expire); if ($ban_expire == -1 || $ban_expire <= time()) message('You entered an invalid expire date. The format should be YYYY-MM-DD and the date must be at least one day in the future.'); } else $ban_expire = 'NULL'; $ban_user = ($ban_user != '') ? '\''.$db->escape($ban_user).'\'' : 'NULL'; $ban_ip = ($ban_ip != '') ? '\''.$db->escape($ban_ip).'\'' : 'NULL'; $ban_email = ($ban_email != '') ? '\''.$db->escape($ban_email).'\'' : 'NULL'; $ban_message = ($ban_message != '') ? '\''.$db->escape($ban_message).'\'' : 'NULL'; if ($_POST['mode'] == 'add') $db->query('INSERT INTO '.$db->prefix.'bans (username, ip, email, message, expire) VALUES('.$ban_user.', '.$ban_ip.', '.$ban_email.', '.$ban_message.', '.$ban_expire.')') or error('Unable to add ban', __FILE__, __LINE__, $db->error()); else $db->query('UPDATE '.$db->prefix.'bans SET username='.$ban_user.', ip='.$ban_ip.', email='.$ban_email.', message='.$ban_message.', expire='.$ban_expire.' WHERE id='.intval($_POST['ban_id'])) or error('Unable to update ban', __FILE__, __LINE__, $db->error()); // Regenerate the bans cache require_once PUN_ROOT.'include/cache.php'; generate_bans_cache(); redirect('admin_bans.php', 'Ban '.(($_POST['mode'] == 'edit') ? 'edited' : 'added').'. Redirecting …'); } // Remove a ban else if (isset($_GET['del_ban'])) { confirm_referrer('admin_bans.php'); $ban_id = intval($_GET['del_ban']); if ($ban_id < 1) message($lang_common['Bad request']); $db->query('DELETE FROM '.$db->prefix.'bans WHERE id='.$ban_id) or error('Unable to delete ban', __FILE__, __LINE__, $db->error()); // Regenerate the bans cache require_once PUN_ROOT.'include/cache.php'; generate_bans_cache(); redirect('admin_bans.php', 'Ban removed. Redirecting …'); } $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Bans'; $focus_element = array('bans', 'new_ban_user'); require PUN_ROOT.'header.php'; generate_admin_menu('bans'); ?>

New ban

Add ban
Username
The username to ban (case insensitive). The next page will let you enter a custom IP and e-mail. If you just want to ban a specific IP/IP-range or e-mail just leave it blank.

Existing bans

query('SELECT id, username, ip, email, message, expire FROM '.$db->prefix.'bans ORDER BY id') or error('Unable to fetch ban list', __FILE__, __LINE__, $db->error()); if ($db->num_rows($result)) { while ($cur_ban = $db->fetch_assoc($result)) { $expire = format_time($cur_ban['expire'], true); ?>
Ban expires:
Username
E-mail
IP/IP-ranges
Reason

Edit - Remove

No bans in list.

'."\n"; ?>