Единый валидатор имён.

This commit is contained in:
2024-04-30 19:08:09 +03:00
parent 078cb49669
commit bfc075010d
6 changed files with 157 additions and 377 deletions
+9 -25
View File
@@ -1,4 +1,8 @@
<?php
use Model\Constant\Stat;
use Validator\Login;
echo "
<script language='JavaScript'>
var elem = document.getElementById('se-pre-con');
@@ -19,39 +23,19 @@ if (!isset($an['id'])) {
mysql_query('UPDATE `users` SET `animal` = "0" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
mysql_query('UPDATE `users_animal` SET `delete` = "' . time() . '" WHERE `uid` = "' . $u->info['id'] . '" AND `id` = "' . $an['id'] . '" AND `delete` = "0" LIMIT 1');
} elseif (isset($_GET['anml_login']) && $an['renameArrayKeys'] == 0) {
$n = 1;
function en_ru($txt)
{
$g = false;
$en = preg_match("/^(([a-zA-Z _-])+)$/i", $txt);
$ru = preg_match("/^(([а-яА-Я _-])+)$/i", $txt);
if (($ru && $en) || (!$ru && !$en)) {
$g = true;
}
return $g;
}
$nl = htmlspecialchars($_GET['anml_login'], null);
$nl = str_replace(' ', '', $nl);
$nl = str_replace(' ', '', $nl);
$sr = "!@#$%^&*()\+Ёё|/'`\"-_";
if ($nl == '' || strlen($nl) > 10 || strlen($nl) < 2 || en_ru($nl) == true || strpos($sr, $nl)) {
$n = 0;
} else {
$nl = (new Login())->setLogin($_GET['anml_login'])->get();
}
if ($n == 1) {
if (!empty($nl)) {
mysql_query(
'UPDATE `users_animal` SET `name` = "' . mysql_real_escape_string(
$nl
) . '",`renameArrayKeys` = "1" WHERE `uid` = "' . $u->info['id'] . '" AND `id` = "' . $an['id'] . '" AND `delete` = "0" LIMIT 1'
);
$an['renameArrayKeys'] = 1;
echo '<font color="red">Вы успешно переименовали питомца в &quot;' . $nl . '&quot;</font>';
echo '<span style="color: red; ">Вы успешно переименовали питомца в &quot;' . $nl . '&quot;</span>';
} else {
echo '<font color="red">Эта кличка не подходит</font>';
echo '<span style="color: red; ">Эта кличка не подходит</span>';
}
}
@@ -195,7 +179,7 @@ if (!isset($an['id'])) {
<?php
$ba = '';
$i = 0;
$statnames = new \Model\Constant\Stat();
$statnames = new Stat();
$statnames->getBonus();
while ($i < count($statnames->sysBonusNames)) {
+10 -100
View File
@@ -43,98 +43,6 @@ $an_eda = [
7.00,
];
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;
}
//
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_an($login)
{
$r = true;
//
$login = htmlspecialchars($login, null);
//
$bad = [
'Мусорщик' => 1,
'Мироздатель' => 1,
];
//
if (isset($login_db['id']) || isset($login_an_db['id']) || isset($bad[$login])) {
$r = false;
} else {
$true = true;
//
/*
Логин может содержать от 2 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела.
Логин не может начинаться или заканчиваться символами '_', '-' или пробелом.
*/
//
$login = str_replace(' ', ' ', $login);
$login = str_replace('%', ' ', $login);
$login = str_replace('&nbsp;', ' ', $login);
//
if (strlen($login) > 16) {
$true = false;
} elseif (strlen($login) < 2) {
$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) {
$r = false;
}
}
return $r;
}
if (isset($_GET['buy_slot'])) {
if ($u->info['money2'] < $slot['price_nex']) {
$u->error = 'Недостаточно денег';
@@ -150,8 +58,9 @@ if (isset($_GET['buy_slot'])) {
$u->error = 'Нельзя купить больше слотов';
}
} elseif (isset($_GET['pet'])) {
$newpetname = (new \Validator\Login())->setLogin($_GET['petname'])->get();
$_GET['pet'] = round((int)$_GET['pet']);
$_GET['petname'] = htmlspecialchars($_GET['petname'], null);
$ax = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users_animal` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 LIMIT 1'));
$ax = $ax[0];
if ($_GET['pet'] < 1 || $_GET['pet'] > 7) {
@@ -160,12 +69,12 @@ if (isset($_GET['buy_slot'])) {
$u->error = 'Нет свободных слотов для зверя';
} elseif ($u->info['money'] < 50) {
$u->error = 'Недостаточно денег';
} elseif (!is_login_an($_GET['petname'])) {
} elseif (!empty($_GET['petname']) && !$newpetname) {
$u->error = 'Неверная кличка зверя, выберите другую';
} else {
$u->error = 'Зверь пришел к Вам!';
$u->info['money'] -= 50;
mysql_query('UPDATE `users` SET `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
$u->addKr(-50);
//
$anm['type'] = $_GET['pet'];
//
@@ -206,8 +115,9 @@ if (isset($_GET['buy_slot'])) {
$anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10';
}
//
$anm['name'] = htmlspecialchars($_GET['petname'], null);
$anm['name'] = preg_replace("/&#?[a-z0-9]+;/i", "", $anm['name']);
if (!empty($_GET['petname'])) {
$anm['name'] = htmlspecialchars($newpetname, null);
}
//
$anm['obraz'] = $anm['obraz'][rand(1, count($anm['obraz']))];
$anm['obraz'] = str_replace('.gif', '', $anm['obraz']);
@@ -221,7 +131,7 @@ if (isset($_GET['buy_slot'])) {
1,
'System.inventory',
$u->info['id'],
'&quot;<span style="color: maroon; ">System.inventory</span>&quot;: Персонаж призвал зверя &quot;' . $_GET['petname'] . '&quot; (' . $_GET['pet'] . ') - 50 кр.',
'&quot;<span style="color: maroon; ">System.inventory</span>&quot;: Персонаж призвал зверя &quot;' . $newpetname . '&quot; (' . $_GET['pet'] . ') - 50 кр.',
);
} else {
$u->error = 'Не удалось призвать зверя, что-то здесь не так ...';
@@ -404,7 +314,7 @@ if ($u->error != '') {
//
echo '<td width="16%" align="center" valign="top">';
//
echo '<div class="an_line"><b><img onclick="top.anrename(' . $pl['id'] . ',\'' . $pl['name'] . '\');" class="cp" src="//img.new-combats.tech/pencil.png" width="16" height="16" title="Изменить кличку"> <small>' . $pl['name'] . '</small> <img onclick="if(confirm(\'Вы действительно хотите ВЫГНАТЬ зверя &quot;' . $pl['name'] . '&quot;?\')) location.href=\'main.php?newanimal&pet_del=' . $pl['id'] . '\';" class="cp" src="//img.new-combats.tech/i/clear.gif" title="Выгнать" width="13" height="13"></b></div>';
echo '<div class="an_line"><b><img onclick="top.anrename(' . $pl['id'] . ',\'' . $pl['name'] . " src=" . $pl['name'] . '</small> <img onclick="if(confirm(\'Вы действительно хотите ВЫГНАТЬ зверя &quot;' . $pl['name'] . '&quot;?\')) location.href=\'main.php?newanimal&pet_del=' . $pl['id'] . '\';" class="cp" src="//img.new-combats.tech/i/clear.gif" title="Выгнать" width="13" height="13"></b></div>';
//
echo '<div title="' . $pl['name'] . '" class="an_border"><img src="//img.new-combats.tech/i/obraz/' . $pl['sex'] . '/' . $pl['obraz'] . '.gif" width="120" height="220"></div>';
//