if ($planetrow['id'] == $user['id_planet']) { db_user_set_by_id($user['id'], "galaxy = {$new_coordinates['galaxy']}, system = {$new_coordinates['system']}, planet = {$new_coordinates['planet']}"); } // $global_data = sys_o_get_updated($user, $planetrow['id'], SN_TIME_NOW); sn_db_transaction_commit(); $user = db_user_by_id($user['id'], true, '*'); $planetrow = db_planet_by_id($planetrow['id'], true, '*'); $result = array('STATUS' => ERR_NONE, 'MESSAGE' => $lang['ov_teleport_err_none']); sys_redirect('overview.php?mode=manage'); } catch (exception $e) { sn_db_transaction_rollback(); $result = array('STATUS' => $e->getCode(), 'MESSAGE' => $e->getMessage()); } } elseif (sys_get_param_str('abandon')) { //if(sec_password_encode(sys_get_param('abandon_confirm'), $user['salt']) == $user['password']) { if (sec_password_check($user, sys_get_param('abandon_confirm'))) { if ($user['id_planet'] != $user['current_planet'] && $user['current_planet'] == $planet_id) { $destroyed = SN_TIME_NOW + 60 * 60 * 24; db_planet_set_by_id($user['current_planet'], "`destruyed`='{$destroyed}', `id_owner`=0"); db_planet_set_by_parent($user['current_planet'], "`destruyed`='{$destroyed}', `id_owner`=0"); db_user_set_by_id($user['id'], '`current_planet` = `id_planet`'); message($lang['ov_delete_ok'], $lang['colony_abandon'], 'overview.php?mode=manage'); } else { message($lang['ov_delete_wrong_planet'], $lang['colony_abandon'], 'overview.php?mode=manage'); } } else { message($lang['ov_delete_wrong_pass'], $lang['colony_abandon'], 'overview.php?mode=manage'); } } elseif (($hire = sys_get_param_int('hire')) && in_array($hire, sn_get_groups('governors')) && (!get_unit_param($hire, P_MAX_STACK) || $planetrow['PLANET_GOVERNOR_ID'] != $hire || $planetrow['PLANET_GOVERNOR_ID'] == $hire && $planetrow['PLANET_GOVERNOR_LEVEL'] < get_unit_param($hire, P_MAX_STACK))) { sn_db_transaction_start(); $user = db_user_by_id($user['id'], true);
/** * @param int|array $user * * @param string $new_password_unsafe * * @param bool|string $old_password_unsafe * <p>false - Проверка текущего пароля не будет производиться</p> * <p>string - Будет произведена проверка текущего пароля на равенство указанной строке</p> * * @param bool|int $remember_me * <p>false - Кука пользователя изменена не будет</p> * <p>int - Будет изменена кука пользователя и поле rememberme установлено в значение параметра</p> * * @return array|bool|resource <p><b>true</b> - если пароль изменен успешно<p> * <p>true - если пароль изменен успешно<p> * <p>false - в остальных случаях<p> */ function sec_password_change($user, $new_password_unsafe, $old_password_unsafe, $remember_me = false) { // Если старый пароль не равен true - значит надо провести проверку пароля // Проверяем старый пароль и меняем только если всё ОК if ($old_password_unsafe !== false && !sec_password_check($user, $old_password_unsafe)) { return false; } $salt_unsafe = sec_password_salt_generate(); $password_encoded = sec_password_encode($new_password_unsafe, $salt_unsafe); $salt_safe = db_escape($salt_unsafe); $user_id = is_array($user) && !empty($user['id']) ? $user['id'] : $user; $result = sec_password_set($user_id, $password_encoded, $salt_safe); if ($result && $remember_me !== false) { sec_set_cookie_by_user(array('id' => $user_id, 'username' => '', 'password' => $password_encoded), $remember_me); } return $result; }