Добавлена возможность пдрубатся к двум базам на разных адресах(хостах)!
Скрипт вывода администрации, пример можно посмотреть по ссылкам (не реклама)
1. [Ссылки могут видеть только зарегистрированные пользователи. ] (Скилет)
2. [Ссылки могут видеть только зарегистрированные пользователи. ] (в шаблоне)
Что задействовано
JS/CSS - Twitter Bootstrap v2.3.1
jQuery v1.9.1
Настройка
Все настройки прописываем в файле config.php
$hlx_webpage - Адрес сайта HLstatsX CE
$sb_webpage - Адрес сайтеа SourceBans
Подлключаемя к HLstatsX CE
PHP код:
$opts_hlx = array(
'host' => '10.1.1.54', /*Адрес*/
'user' => 'endi', /* Имя пользователя */
'pass' => '*********', /* Пароль */
'db' => 'game', /* Имя базы */
);
Подлключаемя к SourceBans
PHP код:
$opts_bans = array(
'host' => '10.25.0.146', /*Адрес*/
'user' => 'vectorserver', /* Имя пользователя */
'pass' => '*********', /* Пароль */
'db' => 'bans', /* Имя базы */
);
Вывод определенных модов игр (Напимер только CSS и HL2)
Открываем файл index.html
Ишем в тегах ********** data.php дописываем параметр game Пример: data.php?game=css
Также можно перечесть типы игр через запятую. Пример: data.php?game=css,cs,hl,tf
Файлы index.html
PHP код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="minecraft,warsow,cs:s,cs16,сервер,convex,crfxfnm,xbns,tagil,portal,cominet,vector,endi,bans,статистика,баны,игры,тагил,лучший,скачать,no-steam,379-379,online" />
<meta name="description" content="Мы рады приветствовать вас на игровом портале game.cominet.ru
Наш игровой портал создан в первую очередь для тех, кто любит популярные on-line игры. Сервера game.cominet.ru открыты для всех желающих и работают круглосуточно. Постоянно доступен мониторинг игровых серверов.Все вопросы можно задать и найти нужный ответ по теме на форуме ." />
<title>Вывод администрации - game.cominet.ru</title>
<script src="http://yandex.st/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>
<link rel="stylesheet" href="http://yandex.st/bootstrap/2.3.1/css/bootstrap.min.css">
<script src="http://yandex.st/bootstrap/2.3.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="http://yandex.st/jquery-ui/1.10.2/themes/black-tie/jquery-ui.min.css">
<script src="http://yandex.st/jquery-ui/1.10.2/jquery-ui.min.js"></script>
public function parse()
{
return $this->prepareQuery(func_get_args());
}
public function whiteList($input,$allowed,$default=FALSE)
{
$found = array_search($input,$allowed);
return ($found === FALSE) ? $default : $allowed[$found];
}
public function filterArray($input,$allowed)
{
foreach(array_keys($input) as $key )
{
if ( !in_array($key,$allowed) )
{
unset($input[$key]);
}
}
return $input;
}
public function lastQuery()
{
$last = end($this->stats);
return $last['query'];
}
public function getStats()
{
return $this->stats;
}
$value = array_shift($args);
switch ($part)
{
case '?n':
$part = $this->escapeIdent($value);
break;
case '?s':
$part = $this->escapeString($value);
break;
case '?i':
$part = $this->escapeInt($value);
break;
case '?a':
$part = $this->createIN($value);
break;
case '?u':
$part = $this->createSET($value);
break;
case '?p':
$part = $value;
break;
}
$query .= $part;
}
return $query;
}
private function escapeInt($value)
{
if ($value === NULL)
{
return 'NULL';
}
if(!is_numeric($value))
{
$this->error("Integer (?i) placeholder expects numeric value, ".gettype($value)." given");
return FALSE;
}
if (is_float($value))
{
$value = number_format($value, 0, '.', ''); // may lose precision on big numbers
}
return $value;
}
private function escapeString($value)
{
if ($value === NULL)
{
return 'NULL';
}
return "'".mysqli_real_escape_string($this->conn,$value)."'";
}
private function escapeIdent($value)
{
if ($value)
{
return "`".str_replace("`","``",$value)."`";
} else {
$this->error("Empty value for identifier (?n) placeholder");
}
}
private function createIN($data)
{
if (!is_array($data))
{
$this->error("Value for IN (?a) placeholder should be array");
return;
}
if (!$data)
{
return 'NULL';
}
$query = $comma = '';
foreach ($data as $value)
{
$query .= $comma.$this->escapeString($value);
$comma = ",";
}
return $query;
}
private function createSET($data)
{
if (!is_array($data))
{
$this->error("SET (?u) placeholder expects array, ".gettype($data)." given");
return;
}
if (!$data)
{
$this->error("Empty array for SET (?u) placeholder");
return;
}
$query = $comma = '';
foreach ($data as $key => $value)
{
$query .= $comma.$this->escapeIdent($key).'='.$this->escapeString($value);
$comma = ",";
}
return $query;
}
private function error($err)
{
$err = __CLASS__.": ".$err;
if ( $this->emode == 'error' )
{
$err .= ". Error initiated in ".$this->caller().", thrown";
trigger_error($err,E_USER_ERROR);
} else {
throw new $this->exname($err);
}
}
private function caller()
{
$trace = debug_backtrace();
$caller = '';
foreach ($trace as $t)
{
if ( isset($t['class']) && $t['class'] == __CLASS__ )
{
$caller = $t['file']." on line ".$t['line'];
} else {
break;
}
}
return $caller;
}
private function cutStats()
{
if ( count($this->stats) > 100 )
{
reset($this->stats);
$first = key($this->stats);
unset($this->stats[$first]);
}
}
}
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]