немного логики
This commit is contained in:
parent
f12e7c8cd7
commit
0f62ee20e7
@ -55,8 +55,44 @@ class Travel
|
|||||||
2702 => 'city.php'
|
2702 => 'city.php'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
private static array $fbattleCheckFiles = [
|
||||||
|
'c_haos_in.php',
|
||||||
|
'c_haos.php',
|
||||||
|
'c_park.php',
|
||||||
|
'city.php',
|
||||||
|
'clan_castle.php',
|
||||||
|
'enter_cave.php',
|
||||||
|
'library.php',
|
||||||
|
'atk.php',
|
||||||
|
'podzem_dialog.php',
|
||||||
|
'post.php',
|
||||||
|
'shop.php',
|
||||||
|
'tournament.php',
|
||||||
|
'vxod.php',
|
||||||
|
'bank.php',
|
||||||
|
'canalizaciya,php',
|
||||||
|
'forest.php',
|
||||||
|
'main.php',
|
||||||
|
'repair.php',
|
||||||
|
'towerstamp.php',
|
||||||
|
'hell.php',
|
||||||
|
'ul_clans.php',
|
||||||
|
'labirint.php',
|
||||||
|
'akadem.php',
|
||||||
|
'towerin.php',
|
||||||
|
'user_anketa.php',
|
||||||
|
'zayavka.php',
|
||||||
|
];
|
||||||
|
private static array $towerinCheckFiles = [
|
||||||
|
'main.php',
|
||||||
|
'city.php',
|
||||||
|
'tower.php'
|
||||||
|
];
|
||||||
|
private static array $roomsCheck = [22, 23, 27, 29, 30, 31, 37, 38, 39, 40, 41, 45, 53, 61, 401, 402, 600, 601, 602, 621, 650, 1051, 1052];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Перемещение по комнатам.
|
* Перемещение по комнатам.
|
||||||
|
*
|
||||||
* @param int $roomId ID куда идём.
|
* @param int $roomId ID куда идём.
|
||||||
* @param int $roomIdCurrent ID откуда идём.
|
* @param int $roomIdCurrent ID откуда идём.
|
||||||
*/
|
*/
|
||||||
@ -88,7 +124,9 @@ class Travel
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Проверка можно ли перейти из комнаты в комнату.
|
* Проверка можно ли перейти из комнаты в комнату.
|
||||||
|
*
|
||||||
* @param int $roomId ID комнаты
|
* @param int $roomId ID комнаты
|
||||||
|
*
|
||||||
* @return array|int[]
|
* @return array|int[]
|
||||||
*/
|
*/
|
||||||
private static function allowedRoomMoves(int $roomId): array
|
private static function allowedRoomMoves(int $roomId): array
|
||||||
@ -141,4 +179,32 @@ class Travel
|
|||||||
}
|
}
|
||||||
return $room[$roomId];
|
return $room[$roomId];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Проверки на соответствие скрипта и комнаты, которые были натыканы по всем файлам.
|
||||||
|
* @param int $inRoom
|
||||||
|
* @param int $inBattle
|
||||||
|
* @param int $inTower
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function roomRedirects(int $inRoom, int $inBattle, int $inTower)
|
||||||
|
{
|
||||||
|
if ($inBattle && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], self::$fbattleCheckFiles)) {
|
||||||
|
header('location: fbattle.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
if ($inTower && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], self::$towerinCheckFiles)) {
|
||||||
|
header('location: towerin.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
// Если я в одной из этих комнат,
|
||||||
|
// [И] Имя файла который инклюдит файл с проверкой не совпадает с именем файла локации в которой я нахожусь
|
||||||
|
// [И] Номер комнаты который я пытаюсь открыть есть в списке проверяемых
|
||||||
|
if (in_array($inRoom, self::$roomsCheck)
|
||||||
|
&& pathinfo(debug_backtrace()[0]['file'])['basename'] != self::$roomFileName[$inRoom]
|
||||||
|
&& in_array(array_search(pathinfo(debug_backtrace()[0]['file'])['basename'], self::$roomFileName), self::$roomsCheck)) {
|
||||||
|
header('location: main.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
108
functions.php
108
functions.php
@ -23,56 +23,60 @@ if (User::getInstance()->getBlock()) {
|
|||||||
exit('user blocked!');
|
exit('user blocked!');
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
//Проверки на соответствие скрипта и комнаты, которые были натыканы по всем файлам.
|
||||||
* Проверки на соответствие скрипта и комнаты, которые были натыканы по всем файлам.
|
Travel::roomRedirects(User::$current->getRoom(), User::$current->getBattle(), User::$current->getInTower());
|
||||||
*/
|
|
||||||
$fbattleCheckFiles = [
|
///*
|
||||||
'c_haos_in.php',
|
// * Проверки на соответствие скрипта и комнаты, которые были натыканы по всем файлам.
|
||||||
'c_haos.php',
|
// */
|
||||||
'c_park.php',
|
//$fbattleCheckFiles = [
|
||||||
'city.php',
|
// 'c_haos_in.php',
|
||||||
'enter_cave.php',
|
// 'c_haos.php',
|
||||||
'library.php',
|
// 'c_park.php',
|
||||||
'atk.php',
|
// 'city.php',
|
||||||
'podzem_dialog.php',
|
// 'clan_castle.php',
|
||||||
'post.php',
|
// 'enter_cave.php',
|
||||||
'shop.php',
|
// 'library.php',
|
||||||
'tournament.php',
|
// 'atk.php',
|
||||||
'vxod.php',
|
// 'podzem_dialog.php',
|
||||||
'bank.php',
|
// 'post.php',
|
||||||
'canalizaciya,php',
|
// 'shop.php',
|
||||||
'forest.php',
|
// 'tournament.php',
|
||||||
'main.php',
|
// 'vxod.php',
|
||||||
'repair.php',
|
// 'bank.php',
|
||||||
'towerstamp.php',
|
// 'canalizaciya,php',
|
||||||
'hell.php',
|
// 'forest.php',
|
||||||
'ul_clans.php',
|
// 'main.php',
|
||||||
'labirint.php',
|
// 'repair.php',
|
||||||
'akadem.php',
|
// 'towerstamp.php',
|
||||||
'towerin.php',
|
// 'hell.php',
|
||||||
'user_anketa.php',
|
// 'ul_clans.php',
|
||||||
'zayavka.php',
|
// 'labirint.php',
|
||||||
];
|
// 'akadem.php',
|
||||||
//Может просто отовсюду? О_о
|
// 'towerin.php',
|
||||||
if (User::getInstance()->getBattle() && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], $fbattleCheckFiles)) {
|
// 'user_anketa.php',
|
||||||
header('location: fbattle.php');
|
// 'zayavka.php',
|
||||||
exit;
|
//];
|
||||||
}
|
////Может просто отовсюду? О_о
|
||||||
$towerinCheckFiles = ['main.php', 'city.php', 'tower.php'];
|
//if (User::$current->getBattle() && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], $fbattleCheckFiles)) {
|
||||||
if (User::getInstance()->getInTower() && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], $towerinCheckFiles)) {
|
// header('location: fbattle.php');
|
||||||
header('location: towerin.php');
|
// exit;
|
||||||
exit;
|
//}
|
||||||
}
|
//$towerinCheckFiles = ['main.php', 'city.php', 'tower.php'];
|
||||||
$roomsCheck = [22, 23, 25, 27, 29, 30, 31, 37, 38, 39, 40, 41, 45, 53, 61, 401, 402, 600, 601, 602, 621, 650, 1051, 1052];
|
//if (User::$current->getInTower() && in_array(pathinfo(debug_backtrace()[0]['file'])['basename'], $towerinCheckFiles)) {
|
||||||
// Если я в одной из этих комнат,
|
// header('location: towerin.php');
|
||||||
// [И] Имя файла который инклюдит файл с проверкой не совпадает с именем файла локации в которой я нахожусь
|
// exit;
|
||||||
// [И] Номер комнаты который я пытаюсь открыть есть в списке проверяемых
|
//}
|
||||||
if (in_array(User::getInstance()->getRoom(), $roomsCheck)
|
//$roomsCheck = [22, 23, 25, 27, 29, 30, 31, 37, 38, 39, 40, 41, 45, 53, 61, 401, 402, 600, 601, 602, 621, 650, 1051, 1052];
|
||||||
&& pathinfo(debug_backtrace()[0]['file'])['basename'] != Travel::$roomFileName[User::getInstance()->getRoom()]
|
//// Если я в одной из этих комнат,
|
||||||
&& in_array(array_search(pathinfo(debug_backtrace()[0]['file'])['basename'], Travel::$roomFileName), $roomsCheck)) {
|
//// [И] Имя файла который инклюдит файл с проверкой не совпадает с именем файла локации в которой я нахожусь
|
||||||
header('location: main.php');
|
//// [И] Номер комнаты который я пытаюсь открыть есть в списке проверяемых
|
||||||
exit;
|
//if (in_array(User::$current->getRoom(), $roomsCheck)
|
||||||
}
|
// && pathinfo(debug_backtrace()[0]['file'])['basename'] != Travel::$roomFileName[User::$current->getRoom()]
|
||||||
|
// && in_array(array_search(pathinfo(debug_backtrace()[0]['file'])['basename'], Travel::$roomFileName), $roomsCheck)) {
|
||||||
|
// header('location: main.php');
|
||||||
|
// exit;
|
||||||
|
//}
|
||||||
|
|
||||||
if (!empty($_GET['goto']) && !empty($_GET['tStamp']) && !empty($_GET['vcode']) && $_GET['vcode'] == md5(sha1($_GET['goto'] . $_GET['tStamp']))) {
|
if (!empty($_GET['goto']) && !empty($_GET['tStamp']) && !empty($_GET['vcode']) && $_GET['vcode'] == md5(sha1($_GET['goto'] . $_GET['tStamp']))) {
|
||||||
$query = 'update users u, online o set u.room = ?, o.room = ? where user_id = id and user_id = ?';
|
$query = 'update users u, online o set u.room = ?, o.room = ? where user_id = id and user_id = ?';
|
||||||
@ -436,7 +440,7 @@ function addch($text, $room = 0)
|
|||||||
}
|
}
|
||||||
if ($fp = @fopen("tmp/chat.txt", "a")) { //открытие
|
if ($fp = @fopen("tmp/chat.txt", "a")) { //открытие
|
||||||
flock($fp, LOCK_EX); //БЛОКИРОВКА ФАЙЛА
|
flock($fp, LOCK_EX); //БЛОКИРОВКА ФАЙЛА
|
||||||
fputs($fp, ":[" . time() . "]:[!sys!!]:[" . ($text) . "]:[" . $room . "]\r\n"); //работа с файлом
|
fwrite($fp, ":[" . time() . "]:[!sys!!]:[" . ($text) . "]:[" . $room . "]\r\n"); //работа с файлом
|
||||||
fflush($fp); //ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ
|
fflush($fp); //ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ
|
||||||
flock($fp, LOCK_UN); //СНЯТИЕ БЛОКИРОВКИ
|
flock($fp, LOCK_UN); //СНЯТИЕ БЛОКИРОВКИ
|
||||||
fclose($fp); //закрытие
|
fclose($fp); //закрытие
|
||||||
@ -451,7 +455,7 @@ function addchp($text, $who, $room = 0)
|
|||||||
}
|
}
|
||||||
$fp = fopen("tmp/chat.txt", "a"); //открытие
|
$fp = fopen("tmp/chat.txt", "a"); //открытие
|
||||||
flock($fp, LOCK_EX); //БЛОКИРОВКА ФАЙЛА
|
flock($fp, LOCK_EX); //БЛОКИРОВКА ФАЙЛА
|
||||||
fputs($fp, ":[" . time() . "]:[{$who}]:[" . ($text) . "]:[" . $room . "]\r\n"); //работа с файлом
|
fwrite($fp, ":[" . time() . "]:[{$who}]:[" . ($text) . "]:[" . $room . "]\r\n"); //работа с файлом
|
||||||
fflush($fp); //ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ
|
fflush($fp); //ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ
|
||||||
flock($fp, LOCK_UN); //СНЯТИЕ БЛОКИРОВКИ
|
flock($fp, LOCK_UN); //СНЯТИЕ БЛОКИРОВКИ
|
||||||
fclose($fp); //закрытие
|
fclose($fp); //закрытие
|
||||||
|
Loading…
Reference in New Issue
Block a user