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() ? "