Вход Регистрация
Файл: pages/clan/clans.php
Строк: 197
<?php
// Physical module map v50.6: public URL stays clean while code lives in /pages.
if (!defined('GAME_ROOT')) define('GAME_ROOT'dirname(__DIR__2));
chdir(GAME_ROOT);
if (
PHP_SAPI !== 'cli') { $_SERVER['PHP_SELF']='/clans.php'$_SERVER['SCRIPT_NAME']='/clans.php'; }

/* Обновление игры под PHP 8.4 / PDO и усиление безопасности: by Метриум (Стэлп) */
include './system/common.php';
include 
'./system/functions.php';
 require_once 
'./system/clan_features.php';
include 
'./system/user.php';
     include 
'./system/menu.php';
if(!
$user) {
header('location: /');  
exit;
}
$ankkkk htmlspecialchars((string)($_GET['action'] ?? ''), ENT_QUOTES'UTF-8');
switch(
$ankkkk) {
default:

$title 'Рейтинг кланов';    
include 
'./system/h.php';  
?>
<div class='main'>
<?php
$max 
10;
$count db_result(db_query('SELECT COUNT(*) FROM `clans`'),0);
$pages ceil($count/$max);
$page _string(_num($_GET['page'] ?? 1));
if(
$page $pages) {
$page $pages;
}
if(
$page 1) {
$page 1;
}
$start $page $max $max;
if(
$page == 1) {
$i $page 1;
}
elseif(
$page == 2) {
$i = ($page 9);
}else{
$i = ($page 10) - 9;
}

if(
$page == 1) {
echo 
'
<div class="center"><div class="block_zero"><img src="/images/town/hd/rating.jpg" alt="" width="100%"></div></div>
<div class="mini-line"></div>
'
;
}

if(
$count 0) {

$q db_query('SELECT * FROM `clans` ORDER BY `level` DESC,`exp` DESC LIMIT '.$start.', '.$max.'');
while(
$row db_fetch_array($q)) {
$i++;
if(
$i 4) {
?>

<div class="block_zero">
<img src="/images/icon/crys/<?=$i?>.png" alt=""> <?=$i?> место<div class="mb10"></div>
<a href="/clan/<?=$row['id']?>/"><img class="float-left" src="/images/icon/clan/gerb/<?=$row['gerb']?>.png" alt="" style="margin-right:3px;"></a>
<img src="/images/icon/clan/<?=$row['r']?>.png" alt=""> <a href="/clan/<?=$row['id']?>/"><?=$row['name']?></a> <br>
<img src="/images/icon/level.png" alt=""> Уровень: <b><?=$row['level']?></b> <br>
<img src="/images/icon/exp.png" alt=""> Опыт: <?=n_f($row['exp'])?><br>
</div>
<div class="mini-line"></div>

<?php
}else{
?>

<div class="block_zero">
<span class="white"><?=$i?></span>. <img src="/images/icon/clan/<?=$row['r']?>.png" alt=""> <a href="/clan/<?=$row['id']?>/"><?=$row['name']?></a>, <img src="/images/icon/level.png" alt="lvl"> <b><?=$row['level']?></b><br>
<img src="/images/icon/exp.png" alt=""> <?=n_f($row['exp'])?> опыта</div>
<div class="dot-line"></div>

<?php
}
}
?>

<div class="block_zero"><?=pages('?')?></div>

<?php

?>

<div class="dot-line"></div>
<div class="menuList"><li><a href="?action=search"><img src="/images/icon/clan.png" alt="">Поиск клана</a></li></div>
<div class="mini-line"></div>
<div class="menuList"><li><a href="/clans/create/"><img src="/images/icon/clan.png" alt="">Создать клан</a></li></div>
<div class="mini-line"></div>
<ul class="hint">
<li>Рейтинг обновляется один раз в 10 минут</li>
<li>Чтобы вступить в уже существующий клан, попросите лидера клана пригласить вас</li>
</ul>
</div>
<?php
include './system/f.php';
break;

case 
'create':
$title 'Создать клан';    
include 
'./system/h.php';  
$cost 2000;
?>



<?php

  
if($clan) {

?>

<div class='main'><font color='#999'>Для создания клана необходимо выйти из уже существующего</font></div>

<?php

  
}
  else
  {
  
$name _string($_POST['name'] ?? '');
$name mb_strtolower($name,'UTF-8');
if((
$_SERVER['REQUEST_METHOD'] ?? 'GET')==='POST'security_require_csrf();

  if(
$name && ($_SERVER['REQUEST_METHOD'] ?? 'GET')==='POST') {
    if(!
preg_match('/^[p{L}0-9 _-]{5,20}$/u',$name)) {
      
$_SESSION['err']='Название клана: 5–20 букв/цифр, пробел, дефис или подчёркивание.';
    } elseif((int)
$user['g'] < $cost) {
      
$_SESSION['err']='Недостаточно золота для создания клана.';
    } elseif(
db_fetch_one('SELECT `id` FROM `clans` WHERE `name`=? LIMIT 1',[$name])) {
      
$_SESSION['err']='Клан с таким названием уже существует.';
    } else {
      
$randomGerb=random_int(1,17);
      
$pdo=db_pdo();
      try {
        
$pdo->beginTransaction();
        
$st=$pdo->prepare('UPDATE `users` SET `g`=`g`-? WHERE `id`=? AND `g`>=?');
        
$st->execute([$cost,(int)$user['id'],$cost]);
        if(
$st->rowCount()!==1) throw new RuntimeException('Недостаточно золота');
        
$st=$pdo->prepare('INSERT INTO `clans` (`name`,`r`,`gerb`,`day`,`mounth`,`year`) VALUES (?,?,?,?,?,?)');
        
$st->execute([$name,(int)$user['r'],$randomGerb,date('d'),date('m'),date('y')]);
        
$clan_id=(int)$pdo->lastInsertId();
        
$st=$pdo->prepare('INSERT INTO `clan_memb` (`clan`,`user`,`rank`,`time`,`last_update`) VALUES (?,?,5,?,?)');
        
$st->execute([$clan_id,(int)$user['id'],time(),time()+86400]);
        
clan_emblem_ensure_current($clan_id,$randomGerb,(int)$user['id']);
        
$pdo->commit();
        
header('Location: /clan/'); exit;
      } catch(
Throwable $e) {
        if(
$pdo->inTransaction()) $pdo->rollBack();
        
$_SESSION['err']='Не удалось создать клан. Попробуйте ещё раз.';
        if(
function_exists('app_log_write')) app_log_write('CLAN-CREATE',$e->getMessage());
      }
    }
  }

?>

<div class='main' align='center'>
  <form action='' method='post'>
  <?=security_csrf_field()?>
  Название клана:<br/>
  <input name='name'/><br/>
  <span class='btn'><span class='end'><input class='label' type='submit' value='Создать клан'></span></span></form><center><span class='grey'>Цена: <img src='/images/icon/gold.png' alt=''/>
2000 золота</span></div></center><div class='mini-line'></div><div class ='main'><ul class='hint'><li>В названии можно использовать от 5 до 20 рус. или латин. символов.</li></ul></div>
  </form>
</div>

<?php
  
  
}

include 
'./system/f.php';

  break;

  case 
'search':
$title 'Поиск клана';    
include 
'./system/h.php';  

$log _string($_POST['log']);
  if(
$log) {
    
$clun db_query('SELECT * FROM `clans` WHERE `name` = "'.$log.'"');
    
$clun db_fetch_array($clun);
  
  if(
$clun) {

    
header('location: /clan/'.$clun['id'].'/');

  }
  else
  {
  echo
'Нет такого клана';
  }

  }

?>

<div class='main'>
<div class='block_zero'>
  <form action='/clans/search/' method='post'>
    Название клана:<br/><input name='log' class='text'/><br/>
     <span class='btn'><span class='end'><input class='label' type='submit' value='Поиск'></span></span>
</form>
</div><div class='mini-line'></div>
<div class='menuList'><li><a href='/clans/'><img src='/images/icon/clan.png' alt=''/>Список кланов</a></li></div>
</div>
<?php
include './system/f.php';

  break;

}

?>
Онлайн: 3
Реклама