/** * Обновляет адреса пользователя в сером списке IP * * @param int $nUserId UID пользователя * @param string $sUserLogin Логин пользователя * @param int $nAdminId UID админа * @param string $sIp список IP адресов * @return object xajaxResponse */ function setPrimaryIp($nUserId = 0, $sUserLogin = '', $nAdminId = 0, $sIp = '') { session_start(); $objResponse = new xajaxResponse(); $objResponse->script('gray_ip.clearEditAll();'); $sIp = change_q(trim(stripslashes($sIp)), true); $aIp = users::CheckSafetyIP($sIp); if (!$aIp['error_flag']) { $bRes = gray_ip::updatePrimaryIp($nUserId, $sUserLogin, $nAdminId, $aIp['ip_addresses'], $bDel); if ($bRes) { $objResponse->alert('IP адреса успешно сохранены' . ($bDel ? "\nСтраница будет перезагружена" : '')); if ($bDel) { $objResponse->script('window.location.reload(true)'); } } else { $objResponse->alert('Ошибка сохранения IP адресов'); } } else { $objResponse->alert($aIp['alert'][1]); } return $objResponse; }
} break; case "safety_update": require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr_meta.php'; $reqv = sbr_meta::getUserReqvs(get_uid(false)); $ureqv = $reqv[$reqv['form_type']]; $ip_addresses = change_q(trim(stripslashes($_POST['ip_addresses'])), true); $bind_ip = $_POST['bind_ip']; if ($bind_ip != 't') { $bind_ip = 'f'; } $password = trim(stripslashes($_POST['password'])); $error_flag = 0; $frl = new users(); // Проверям IP $c_ip = $frl->CheckSafetyIP($ip_addresses); $ip_addresses = $c_ip['ip_addresses']; $alert[1] = $c_ip['alert'][1]; $error_flag = $c_ip['error_flag']; // Проверям правильность пароля $current_password = $frl->GetField($uid, $ee, 'passwd'); if (users::hashPasswd($password) != $current_password) { $error_flag = 1; $alert[3] = "Вы ввели неправильный пароль"; } $password = ''; if (!$error_flag) { $info_msg = "Изменения внесены"; $_SESSION['info_msg'] = $info_msg; $frl->UpdateSafetyInformation($uid, $ip_addresses, $bind_ip); header_location_exit('/users/' . $_SESSION['login'] . '/setup/safety/');
/** * Изменение IP адрессов разрешенных для логина пользователя * * @param integer $uid ID пользователя * @param string $ip IP адресса * * @return string сообщение об ошибке */ function ChangeSafetyIP($uid, $ip) { global $DB; $res = ''; $ip_addresses = preg_replace("/,[ ]{0,}/", "\n", $ip); $c_ip = users::CheckSafetyIP($ip_addresses); $ip_addresses = $c_ip['ip_addresses']; $res = $c_ip['alert'][1]; if (!$res) { $sql = "DELETE FROM users_safety WHERE uid=?i"; $DB->query($sql, $uid); if (!empty($ip_addresses)) { while (list($k, $v) = each($ip_addresses)) { if (strstr($v, '-')) { list($b_ip, $e_ip) = preg_split("/\\-/", $v); $b_ip = ip2long($b_ip); $e_ip = ip2long($e_ip); } else { if (strstr($v, '/')) { list($b_ip, $e_ip) = preg_split("/\\//", $v); $b_ip = ip2long($b_ip); $e_ip = $b_ip + pow(2, 32 - $e_ip) - 1; } else { $b_ip = ip2long($v); $e_ip = ip2long($v); } } $sql = "INSERT INTO users_safety(uid,b_ip,e_ip) VALUES(?i,?i,?i);"; if (!$DB->query($sql, $uid, $b_ip, $e_ip)) { $ret = 0; } } } } return $res; }