Единый валидатор имён.
This commit is contained in:
@@ -4,6 +4,7 @@ use Core\Config;
|
||||
use Core\Database;
|
||||
use Core\Db;
|
||||
use Model\EkrExchangeRates;
|
||||
use Validator\Login;
|
||||
|
||||
if (!defined('GAME_VERSION')) {
|
||||
require_once '_incl_data/autoload.php';
|
||||
@@ -431,142 +432,39 @@ if (isset($_POST['do']) && $_POST['do'] == 'newShadow') {
|
||||
$day1 = round($day1def + $dc1, 2);
|
||||
$day2 = round($day2def + $dc2, 2);
|
||||
} elseif (isset($_POST['login'])) {
|
||||
//
|
||||
function en_ru($txt)
|
||||
{
|
||||
$g = false;
|
||||
$en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt);
|
||||
$ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt);
|
||||
if (($ru && $en) || (!$ru && !$en)) {
|
||||
$g = true;
|
||||
}
|
||||
return $g;
|
||||
}
|
||||
$newlogin = (new Login())->setLogin($_POST['login'])->get();
|
||||
|
||||
//
|
||||
function testBad($txt)
|
||||
{
|
||||
$white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMїЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮїйцукенгшщзхъфывапролджэячсмитьбю';
|
||||
$r = false;
|
||||
$i = 0;
|
||||
while ($i != -1) {
|
||||
if (isset($txt[$i])) {
|
||||
$g = false;
|
||||
$j = 0;
|
||||
while ($j != -1) {
|
||||
if (isset($white[$j])) {
|
||||
if ($white[$j] == $txt[$i]) {
|
||||
$g = true;
|
||||
}
|
||||
} else {
|
||||
$j = -2;
|
||||
}
|
||||
$j++;
|
||||
}
|
||||
if (!$g) {
|
||||
$r = true;
|
||||
}
|
||||
} else {
|
||||
$i = -2;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
return $r;
|
||||
}
|
||||
|
||||
function is_login($login)
|
||||
{
|
||||
$r = true;
|
||||
//
|
||||
$login = htmlspecialchars($login, null);
|
||||
//
|
||||
$bad = [
|
||||
'Мусорщик' => 1,
|
||||
'Мироздатель' => 1,
|
||||
];
|
||||
|
||||
//
|
||||
$login_db = mysql_fetch_array(
|
||||
mysql_query(
|
||||
'SELECT `id` FROM `users` WHERE `login` = "' . mysql_real_escape_string($login) . '" LIMIT 1'
|
||||
)
|
||||
);
|
||||
if (isset($login_db['id']) || isset($bad[$login])) {
|
||||
$r = false;
|
||||
} else {
|
||||
$true = true;
|
||||
//
|
||||
/*
|
||||
Логин может содержать от 4 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела.
|
||||
Логин не может начинаться или заканчиваться символами '_', '-' или пробелом.
|
||||
*/
|
||||
//
|
||||
$login = str_replace(' ', ' ', $login);
|
||||
$login = str_replace('%', ' ', $login);
|
||||
$login = str_replace(' ', ' ', $login);
|
||||
//
|
||||
if (strlen($login) > 16) {
|
||||
$true = false;
|
||||
} elseif (strlen($login) < 4) {
|
||||
$true = false;
|
||||
} elseif (strripos($login, ' ') == true) {
|
||||
$true = false;
|
||||
} elseif (substr($login, 1) == ' ' || substr($login, -1) == ' ') {
|
||||
$true = false;
|
||||
} elseif (substr($login, 1) == '-' || substr($login, -1) == '-') {
|
||||
$true = false;
|
||||
} elseif (substr($login, 1) == '_' || substr($login, -1) == '_') {
|
||||
$true = false;
|
||||
} elseif (testBad($login) == true) {
|
||||
$true = false;
|
||||
} elseif (en_ru(str_replace('ї', 'е', str_replace('ї', 'Е', $login))) == true) {
|
||||
$true = false;
|
||||
}
|
||||
//
|
||||
if ($true == false) {
|
||||
$r = false;
|
||||
} else {
|
||||
$r = true;
|
||||
}
|
||||
}
|
||||
return $r;
|
||||
}
|
||||
|
||||
if ($u->info['login'] == $_POST['login']) {
|
||||
if (!empty($newlogin) && $u->info['login'] === $newlogin) {
|
||||
$u->error = 'Выберите другой логин...';
|
||||
} elseif ($u->info['money2'] < 25) {
|
||||
$u->error = 'Недостаточно средств.';
|
||||
} else {
|
||||
$login = htmlspecialchars($_POST['login'], null);
|
||||
if (is_login($login) == true) {
|
||||
mysql_query(
|
||||
'INSERT INTO `lastnames` ( `uid`,`login`,`newlogin`,`time` ) VALUES (
|
||||
mysql_query(
|
||||
'INSERT INTO `lastnames` ( `uid`,`login`,`newlogin`,`time` ) VALUES (
|
||||
"' . $u->info['id'] . '","' . $u->info['login'] . '","' . mysql_real_escape_string(
|
||||
$login
|
||||
) . '","' . time() . '"
|
||||
$newlogin
|
||||
) . '","' . time() . '"
|
||||
)'
|
||||
);
|
||||
$u->info['login_last'] = $u->info['login'];
|
||||
$u->info['login'] = $login;
|
||||
$u->info['money2'] -= 25;
|
||||
//
|
||||
mysql_query(
|
||||
"UPDATE `items_users` SET `data` = replace( `data` , 'sudba=" . $u->info['login_last'] . "', 'sudba=" . mysql_real_escape_string(
|
||||
$u->info['login']
|
||||
) . "') WHERE `data` LIKE '%sudba=" . mysql_real_escape_string(
|
||||
$u->info['login_last']
|
||||
) . "%' AND `uid` = '" . $u->info['id'] . "'"
|
||||
);
|
||||
//
|
||||
mysql_query(
|
||||
'UPDATE `users` SET `login` = "' . mysql_real_escape_string(
|
||||
$u->info['login']
|
||||
) . '", `money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'
|
||||
);
|
||||
$u->error = 'Вы успешно сменили логин на "' . $u->info['login'] . '" перезайдите в игру с главной страницы.';
|
||||
} else {
|
||||
$u->error = 'Выберите другой логин...';
|
||||
}
|
||||
);
|
||||
$u->info['login_last'] = $u->info['login'];
|
||||
$u->info['login'] = $newlogin;
|
||||
$u->addEkr(-25);
|
||||
|
||||
mysql_query(
|
||||
"UPDATE `items_users` SET `data` = replace( `data` , 'sudba=" . $u->info['login_last'] . "', 'sudba=" . mysql_real_escape_string(
|
||||
$u->info['login']
|
||||
) . "') WHERE `data` LIKE '%sudba=" . mysql_real_escape_string(
|
||||
$u->info['login_last']
|
||||
) . "%' AND `uid` = '" . $u->info['id'] . "'"
|
||||
);
|
||||
|
||||
mysql_query(
|
||||
'UPDATE `users` SET `login` = "' . mysql_real_escape_string(
|
||||
$u->info['login']
|
||||
) . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'
|
||||
);
|
||||
$u->error = 'Вы успешно сменили логин на "' . $u->info['login'] . '" перезайдите в игру с главной страницы.';
|
||||
|
||||
}
|
||||
} elseif (isset($_GET['buy_ekr'])) {
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user