hlstatsx/web/ingame.php

154 lines
4.0 KiB
PHP

<?php
/*
HLstatsX Community Edition - Real-time player and clan rankings and statistics
Copyleft (L) 2008-20XX Nicholas Hastings (nshastings@gmail.com)
http://www.hlxcommunity.com
HLstatsX Community Edition is a continuation of
ELstatsNEO - Real-time player and clan rankings and statistics
Copyleft (L) 2008-20XX Malte Bayer (steam@neo-soft.org)
http://ovrsized.neo-soft.org/
ELstatsNEO is an very improved & enhanced - so called Ultra-Humongus Edition of HLstatsX
HLstatsX - Real-time player and clan rankings and statistics for Half-Life 2
http://www.hlstatsx.com/
Copyright (C) 2005-2007 Tobias Oetzel (Tobi@hlstatsx.com)
HLstatsX is an enhanced version of HLstats made by Simon Garner
HLstats - Real-time player and clan rankings and statistics for Half-Life
http://sourceforge.net/projects/hlstats/
Copyright (C) 2001 Simon Garner
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
For support and installation notes visit http://www.hlxcommunity.com
*/
foreach ($_SERVER as $key => $entry) {
if ($key !== "HTTP_COOKIE") {
$search_pattern = array("/<script>/", "/<\/script>/", "/[^A-Za-z0-9.\-\/=:;_?#&~]/");
$replace_pattern = array("", "", "");
$entry = preg_replace($search_pattern, $replace_pattern, $entry);
if ($key == "PHP_SELF") {
if ((strrchr($entry, "/") !== "/hlstats.php") &&
(strrchr($entry, "/") !== "/ingame.php") &&
(strrchr($entry, "/") !== "/show_graph.php") &&
(strrchr($entry, "/") !== "/sig.php") &&
(strrchr($entry, "/") !== "/sig2.php") &&
(strrchr($entry, "/") !== "/index.php") &&
(strrchr($entry, "/") !== "/status.php") &&
(strrchr($entry, "/") !== "/top10.php") &&
(strrchr($entry, "/") !== "/config.php") &&
(strrchr($entry, "/") !== "/") &&
($entry !== "")) {
header("Location: http://".$_SERVER['HTTP_HOST']."/hlstats.php");
exit;
}
}
$_SERVER[$key] = $entry;
}
}
// Several Stuff end
@header("Content-Type: text/html; charset=utf-8");
// do not report NOTICE warnings
@error_reporting(E_ALL ^ E_NOTICE);
////
//// Initialisation
////
define('IN_HLSTATS', true);
define('PAGE', 'INGAME');
///
/// Classes
///
// Load required files
require("config.php");
require(INCLUDE_PATH . "/class_db.php");
require(INCLUDE_PATH . "/class_table.php");
require(INCLUDE_PATH . "/functions.php");
$db_classname = "DB_" . DB_TYPE;
if ( class_exists($db_classname) )
{
$db = new $db_classname(DB_ADDR, DB_USER, DB_PASS, DB_NAME, DB_PCONNECT);
}
else
{
error('Database class does not exist. Please check your config.php file for DB_TYPE');
}
$g_options = getOptions();
if (!isset($g_options['scripturl']))
$g_options['scripturl'] = str_replace('\\','/',$_SERVER['PHP_SELF']);
////
//// Main
////
if ( isset($_GET["game"]) )
{
$game = valid_request($_GET["game"], 0);
}
$mode = isset($_GET["mode"])?$_GET["mode"]:"";
$valid_modes = array(
"pro",
"motd",
"status",
"load",
"help",
"players",
"clans",
"statsme",
"kills",
"targets",
"accuracy",
"actions",
"weapons",
"maps",
"servers",
"bans",
"claninfo",
"weaponinfo",
"mapinfo",
"actioninfo"
);
if (!in_array($mode, $valid_modes))
{
$mode = "status";
}
pageHeader();
if ( file_exists(PAGE_PATH . "/ingame/$mode.php") )
@include(PAGE_PATH . "/ingame/$mode.php");
else
error('Unable to find ' . PAGE_PATH . "/ingame/$mode.php");
pageFooter();
?>