// Функция для получения списка персонажей из gameserver БД
function listCharacters($login) {
global $gameServerConfig;
try {
$connectGameServer = new PDO($gameServerConfig['dsn'], $gameServerConfig['username'], $gameServerConfig['password']);
$connectGameServer->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$characters = array();
$query = "SELECT * FROM characters WHERE account_name = :login";
$statement = $connectGameServer->prepare($query);
$statement->bindParam(':login', $login, PDO::PARAM_STR);
$statement->execute();
while ($character = $statement->fetch(PDO::FETCH_ASSOC)) {
$characters[] = $character;
}
return $characters;
} catch (PDOException $e) {
echo "Ошибка подключения к gameserver БД: " . $e->getMessage();
return array(); // Возвращаем пустой массив в случае ошибки
}
}
// Функция для исправления координат персонажа в gameserver БД
function desbugChar($id) {
global $gameServerConfig;
$query = "UPDATE characters SET x = 82551, y = 147943, z = -3404 WHERE obj_Id = :id";
$statement = $gameServerConfig->prepare($query);
$statement->bindParam(':id', $id, PDO::PARAM_INT);
return $statement->execute();
}
// Функция для изменения пароля в loginserver БД
function changePassword($login, $newpass) {
global $connectLoginServer;
// Валидация логина и нового пароля
if (!isValidLogin($login) || !isValidPassword($newpass)) {
return false; // Возвращаем false, если символы не соответствуют разрешенным
}
$hashedPassword = encryptPassword($newpass);
$query = "UPDATE accounts SET password = :newpass WHERE login = :login";
$statement = $connectLoginServer->prepare($query);
$statement->bindParam(':newpass', $hashedPassword, PDO::PARAM_STR);
$statement->bindParam(':login', $login, PDO::PARAM_STR);
return $statement->execute();
}
// Функция для валидации логина
function isValidLogin($login) {
return preg_match('/^[a-zA-Z0-9_-]+$/', $login);
}
// Функция для валидации пароля
function isValidPassword($password) {
// Дополнительные проверки пароля
// Например, минимальная длина пароля, требования к символам и т.д.
if (strlen($password) < 6) {
return false; // Пароль слишком короткий
}
// Проверка разрешенных символов в пароле
if (!preg_match('/^[a-zA-Z0-9!@#$%^&*()_+-]+$/', $password)) {
return false; // Пароль содержит недопустимые символы
}
return true;
}
// Функция для шифрования пароля
function encryptPassword($password)
{
$hashedPassword = base64_encode(hash('whirlpool', $password, true));
return $hashedPassword;
}