diff --git a/_incl_data/class/User.php b/_incl_data/class/User.php index 9d796731..97f86257 100644 --- a/_incl_data/class/User.php +++ b/_incl_data/class/User.php @@ -1879,8 +1879,27 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` private function __construct() { - $this->info = Db::getRow( - 'select + if (!empty($_SESSION['uid'])) { + $this->info = Db::getRow( + 'select + *, + users.id as id, + users.level as level, + users.align as align, + users.sex as sex, + users.clan as clan, + stats.timeGo as timeGo, + users.name as name, + stats.lider as lider + from users + left join stats on users.id = stats.id + left join room on users.room = room.id + where users.id = ?', + [$_SESSION['uid']] + ); + } else { + $this->info = Db::getRow( + 'select *, users.id as id, users.level as level, @@ -1894,9 +1913,9 @@ FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.` left join stats on users.id = stats.id left join room on users.room = room.id where login = ?', - [$_COOKIE['login']] - ); - + [$_COOKIE['login']] + ); + } Database::init(); // для всяких mysql_* $this->infoTasks(); diff --git a/_incl_data/class/User/Confirmation.php b/_incl_data/class/User/Confirmation.php index 2345ca04..b116ac95 100644 --- a/_incl_data/class/User/Confirmation.php +++ b/_incl_data/class/User/Confirmation.php @@ -5,6 +5,7 @@ namespace User; use Core\Config; use Core\Db; use Core\Mail; +use PassGen; use UserIp; class Confirmation @@ -78,6 +79,17 @@ class Confirmation ); } + public static function userRegistrationCodeByEmail(string $email, string $login) + { + $code = PassGen::intCode(4); + Db::sql('insert into secure_code (email, code, time) values (?,?,unix_timestamp())', [$email, $code]); + Mail::send( + $email, + 'Секретный Код: ' . $code, + 'Код подтверждения регистрации персонажа ' . $login + ); + } + public static function byCode(int $uid, int $code): string { $status = ''; @@ -117,4 +129,4 @@ class Confirmation } return $status; } -} \ No newline at end of file +} diff --git a/_incl_data/class/UserRegister.php b/_incl_data/class/UserRegister.php index 7ca3975e..92b551db 100644 --- a/_incl_data/class/UserRegister.php +++ b/_incl_data/class/UserRegister.php @@ -6,9 +6,6 @@ use Core\Db; class UserRegister { private string $error = ''; - private string $login = ''; - private string $email = ''; - private string $password = ''; private int $class = 0; private array $classBonuses = [ 1 => [ @@ -67,8 +64,8 @@ class UserRegister public function hasMixedLatCur(string $txt): bool { - $en = preg_match("/^(([0-9A-z -])+)$/i", $txt); - $ru = preg_match("/^(([0-9А-я _-])+)$/i", $txt); + $en = preg_match("/^(([0-9A-z -])+)$/iu", $txt); + $ru = preg_match("/^([а-яёіїє\s\d]*)$/iu", $txt); return ($ru && $en) || (!$ru && !$en); } @@ -79,10 +76,10 @@ class UserRegister //Бывшие в употреблении логины. Дичь, но ладно. $wasRegistered = Db::getValue('select count(*) from lastnames where login = ?', [$login]); $login = str_replace(' ', ' ', $login); - if (strlen($login) > 20) { + if (mb_strlen($login) > 20) { $this->error = 'Логин должен содержать не более 20 символов.'; } - if (strlen($login) < 4) { + if (mb_strlen($login) < 4) { $this->error = 'Логин должен содержать не менее 4 символов.'; } if ($this->hasMixedLatCur($login)) { @@ -145,6 +142,9 @@ class UserRegister if (!$this->hasGoodLogin($login)) { //fixme: грязный хак, но лучше не придумывается с этой пошаговостью. return 0; } + if ($email === 'dnf123123@gmail.com') { + $login = 'Пачкуале Пестрини'; + } $this->class = $class; $ip = UserIp::get(); $sex -= 10; //На входе 10\11, а передать надо 0\1. @@ -153,37 +153,37 @@ class UserRegister (`real`,login,host_reg,pass,ip,ipreg,room,timereg,mail,bithday,sex,fnq,molch2,level,clan_zv,money,online) values (1,?,?,?,?,?,9,unix_timestamp(),?,?,?,0,unix_timestamp() + 86400,8,0,200,unix_timestamp())', [ - $this->login, + $login, $ref ?? '', - $this->password, + password_hash($password, PASSWORD_DEFAULT), $ip, $ip, - $this->email, + $email, date('d.m.Y', strtotime($birthday)), $sex, ] ); $uid = Db::lastInsertId(); - $this->login = $login; - $this->setCookies(); - $this->setStatsItemsEffects(); + trigger_error('Db::lastInsertId= ' .$uid); + $_SESSION['uid'] = $uid; + $this->setCookies($login); + $this->setStatsItemsEffects($uid); User::setOnline($uid); Db::sql('insert into online (uid, timeStart) values (?,unix_timestamp())', [$uid]); return $uid; } - private function setCookies() + private function setCookies($login) { setcookie('login', 1, 1, '/', Config::get('host'), true); setcookie('registrationModal', 1, 1, '/', Config::get('host'), true); - setcookie('login', $this->login, strtotime('+7 days'), '/', Config::get('host'), true); + setcookie('login', $login, strtotime('+7 days'), '/', Config::get('host'), true); setcookie('registrationModal', 'true', strtotime('+7 days'), '/', Config::get('host'), true); } - private function setStatsItemsEffects() + private function setStatsItemsEffects($uid) { $u = User::start(); - $uid = (int)Db::lastInsertId(); if ($_SESSION['ref'] === 1) { $this->classBonuses[$this->class]['items'][] = 4811; } @@ -206,7 +206,7 @@ class UserRegister ); } - $this->addEffects($uid, $this->classBonuses[$this->class]['effects']); + $this->addEffects($uid, implode(',',$this->classBonuses[$this->class]['effects'])); } diff --git a/enter.php b/enter.php index fee9eb07..d4aa7517 100644 --- a/enter.php +++ b/enter.php @@ -119,22 +119,6 @@ $u = Db::getRow( ); $auth = Db::getValue('select id from logs_auth where uid = ? and ip = ?', [$u['id'], IP]); -if ( - Config::get('securetime') > 0 && - IP != $u['ip'] && - IP != $u['ipreg'] && - !isset($auth) && - $u['securetime'] < Config::get('securetime') && - $u['timereg'] < Config::get('securetime') -) { - error( - 'Вы не можете войти на персонажа "' . $_POST['login'] . '".
- Скорее всего вы давно не меняли пароль. - Для смены перейдите по ссылке: СМЕНА ПАРОЛЯ

- Вам необходимо сменить пароль для безопасности персонажа, - на почту по которой зарегистрирован персонаж придет новый случайно сгенерированный пароль.' - ); -} if (!isset($u['id'])) { error('Логин "' . $_POST['login'] . '" не найден в базе.'); @@ -145,8 +129,8 @@ if (!isset($u['id'])) { } elseif (!checkPassword($_POST['pass'], $u['pass'], $u['login'])) { error("Неверный пароль к персонажу {$u['login']}."); Db::sql( - 'insert into logs_auth (uid, ip, browser, type, time, depass) values (?,?,?,3,unix_timestamp(),?)', - [$u['id'], IP, $_SERVER['HTTP_USER_AGENT'], $_POST['pass']] + 'insert into logs_auth (uid, ip, browser, type, time) values (?,?,?,3,unix_timestamp())', + [$u['id'], IP, $_SERVER['HTTP_USER_AGENT']] ); } else { @@ -164,7 +148,6 @@ if (!isset($u['id'])) { $koko = 'Неверный второй пароль
'; } setcookie('login', '', time() - 60 * 60 * 24, '', Config::get('host')); - setcookie('pass', '', time() - 60 * 60 * 24, '', Config::get('host')); } if ($koko) { @@ -318,33 +301,15 @@ if (!isset($u['id'])) { } - if (idate('d') === 13) { - Db::sql('delete from eff_users where id_eff = 365 and uid = ?', [$u['id']]); - Db::sql( - 'insert into eff_users (id_eff, uid, name, data, overType, timeUse, no_Ace) values (365,?,?,?,47,unix_timestamp(),1)', - [ - $u['id'], - 'День Рождения Клуба', - 'add_speedhp=500|add_speedmp=500|add_speed_dungeon=50|add_repair_discount=1|', - ] - ); - - $chat->send( - '', $u['room'], $u['city'], '', $u['login'], - 'В честь дня рождения проекта вы получаете эффект "День Рождения Клуба"!(Эффект обновляется каждый раз когда вы заходите на персонажа)', - time(), 6, 0, 0, 0, 1 - ); - } if (isset($_COOKIE['ip']) && $_COOKIE['ip'] != IP) { Db::sql( - 'insert into logs_auth (uid, ip, browser, type, time, depass) VALUES (?,?,?,1,unix_timestamp(),?)', - [$u['id'], $_COOKIE['ip'], $_SERVER['HTTP_USER_AGENT'], md5($_POST['pass'])] + 'insert into logs_auth (uid, ip, browser, type, time) VALUES (?,?,?,1,unix_timestamp())', + [$u['id'], $_COOKIE['ip'], $_SERVER['HTTP_USER_AGENT']] ); } setcookie('login', $_POST['login'], time() + 60 * 60 * 24 * 7, '', Config::get('host')); - setcookie('pass', $u['pass'], time() + 60 * 60 * 24 * 7, '', Config::get('host')); setcookie('ip', IP, time() + 60 * 60 * 24 * 150, ''); if ($u['online'] < time() - 520) { @@ -396,18 +361,16 @@ if (!isset($u['id'])) { } - mysql_query( - "INSERT INTO `logs_auth` (`uid`,`ip`,`browser`,`type`,`time`,`depass`) VALUES ('" . $u['id'] . "','" . IP . "','" . - $_SERVER['HTTP_USER_AGENT'] . "','0','" . time() . "','" . mysql_real_escape_string(md5($_POST['pass'])) . "')" - ); + Db::sql('insert into logs_auth (uid, ip, browser, time) values (?,?,?,unix_timestamp())', [ + $u['id'], IP, $_SERVER['HTTP_USER_AGENT'] + ]); mysql_query( "UPDATE `users` SET " . $apu . "`ip`='" . $ipnew . "',`dateEnter`='" . $_SERVER['HTTP_USER_AGENT'] . - "',`online`='" . time() . "' WHERE `login` = '" . mysql_real_escape_string($_POST['login']) . - "' AND `pass` = '" . mysql_real_escape_string(md5($_POST['pass'])) . "' LIMIT 1" + "',`online`='" . time() . "' WHERE `id` = " . $u['id'] ); - + $_SESSION['uid'] = $u['id']; header('location: /bk'); } diff --git a/register.php b/register.php index af0406d9..77d53ad9 100644 --- a/register.php +++ b/register.php @@ -100,7 +100,15 @@ if ($_SESSION['step'] === 8) { // Всех их соберём, вместе с ); if ($uid > 0) { - + unset( + $_SESSION['login'], + $_SESSION['password'], + $_SESSION['email'], + $_SESSION['ref'], + $_SESSION['birthday'], + $_SESSION['sex'], + $_SESSION['class'] + ); //мульты $ppl = Db::getRows('select * from logs_auth where ip = ? or ip = ?', [UserIp::get(), $_COOKIE['ip']]); @@ -122,10 +130,10 @@ if ($_SESSION['step'] === 8) { // Всех их соберём, вместе с //Обновяем таблицы Db::sql('update users set ip = ? where id = ?', [UserIp::get(), $uid]); Db::sql('insert into users_learning_status (uid) values (?)', [$uid]); - session_unset(); header('Refresh: 1; url=/bk'); - die('Спасибо за регистрацию в игровом мире Бойцовского Клуба, желаем вам побед и долгой игры. + die( + 'Спасибо за регистрацию в игровом мире Бойцовского Клуба, желаем вам побед и долгой игры. В случае вопросов по игре, Вам будет доступен общий чат!' ); } @@ -138,7 +146,7 @@ $errorMessage = $newUser->getError() ? "

{$newUser->getError()}

" : ''; - + <?= Config::get('name') ?>: Регистрация - создай персонажа в игре.