HB/htdocs/index.php

344 lines
12 KiB
PHP

<?php
//Définition de la constante anti-hacking
define("INDEX", 1);
define("DEBUG", false);
//Inclusion de l'API Onyx
require_once(trim(file_get_contents('./.onyx')));
require_once("common.php"); //Chargement de tout le nécessaire pour le jeu
//On vérifie si le client est connecté sur le site
if (isset($SESS) && !(empty($SESS->values["connected"]) && empty($SESS->values['id']) && empty($SESS->values['race']) && empty($SESS->level)) && isset($SESS->values['idPlan']) && isset($SESS->values['idAsteroide'])) {
//Si un nouveau joueur cherche à se connecter du même endroit, on déconnecte le joueur en cours avant
$HB_login = gpc('l');
if (!empty($HB_login) && strtolower($HB_login) != strtolower(trouvNom($SESS->values['id']))) {
require("server/logout.php");
} elseif (!empty($HB_login)) {
redirection("./".$VAR["first_page"]);
exit;
}
//Déconnexion de secours
elseif (isset($_GET["logout"])) {
require("server/logout.php");
redirection("./".$VAR["first_page"]);
}
unset($HB_login);
$race = $SESS->values["race"];
$securePlanete = array();
//Inclusion des formules
require_once("donnees.php");
//On inclus les différentes classes
include_once("Class/exceptionHB.php");
include_once("Class/user.php");
include_once("Class/surface.php");
include_once("Class/planete.php");
include_once("Class/asteroide.php");
include_once("Class/flotte.php");
//Récupération d'informations au sujet de l'utilisateur
$id_user = $SESS->values["id"];
$ip = $_SERVER["REMOTE_ADDR"];
//On commence l'envoie des données requise pour les templates
$template->assign("menu", array_map("url", $VAR["menu"])); //Envoie des liens du menu latéral
$template->assign("auth_level", $SESS->level); //Envoie du niveau d'accès de l'utilisateur
$template->assign("race", $race);
//Connexion à la base de données ou reconnexion si la classe existe
if (isset($bdd)) {
$bdd->reconnexion();
} else {
$bdd = new BDD();
}
//Recherche de multicompte
$multi = $bdd->query("SELECT U.pseudo, R.id_util FROM $table_registre_identification R INNER JOIN $table_user U ON U.id = R.id_util WHERE R.ip = '$ip' GROUP BY R.ip, R.id_util HAVING R.id_util != $id_user;");
//On gère les demande de changement de planète
if (isset($_POST["planete"])) {
if (preg_match("#A#", $_POST["planete"])) {
$idAsteroideTest = intval(substr(gpc("planete", "post"), 1));
if ($bdd->unique_query("SELECT id FROM $table_alliances WHERE id = $idAsteroideTest;") && $bdd->unique_query("SELECT id FROM $table_user WHERE id = $id_user AND id_alliance = $idAsteroideTest;")) {
$SESS->values["idPlan"] = 0;
$SESS->values["idAsteroide"] = $idAsteroideTest;
$SESS->values["isolement"] = 0;
$SESS->put();
$template->assign("page", "vp");
$template->display("game/vp.tpl");
exit;
}
unset($idAsteroideTest);
} else {
$idPlanTest = intval(gpc("planete", "post"));
if ($bdd->unique_query("SELECT id FROM $table_planete WHERE id_user = $id_user AND id = $idPlanTest;")) {
$SESS->values["idPlan"] = $idPlanTest;
$SESS->values["idAsteroide"] = 0;
$SESS->values["isolement"] = 0;
$SESS->put();
$template->assign("page", "vp");
$template->display("game/vp.tpl");
exit;
}
unset($idPlanTest);
}
}
$idPlan = $SESS->values["idPlan"];
$idAsteroide = $SESS->values["idAsteroide"];
$queryMail1 = $bdd->unique_query("SELECT COUNT(id) AS nombre FROM $table_mail WHERE destinataire = $id_user AND expediteur != false AND vu = '1';");
$queryMail2 = $bdd->unique_query("SELECT COUNT(id) AS nombre FROM $table_mail WHERE destinataire = $id_user AND expediteur = false AND vu = '1';");
$queryMail = array($queryMail1["nombre"], $queryMail2["nombre"]);
$queryPlanetes = $bdd->query("SELECT * FROM $table_planete WHERE id_user = $id_user ORDER BY id ASC;");
$bdd->deconnexion();
unset($queryMail1, $queryMail2);
//Chargement de la planète/astéroide actuel
if ($idPlan == 0 && $idAsteroide == 0) {
trigger_error('Planète et Asteroïde nul, deconnexion du joueur '.$id_user, E_USER_ERROR);
include("server/logout.php");
exit;
} elseif ($idPlan == 0) {
define('SURFACE', 'asteroide');
$planete = new Asteroide($idAsteroide);
$planete->actualiser();
//On charge les permissions de l'utilisateur pour l'alliance
$planete->loadPermissions($planete->fondateur);
} else {
define('SURFACE', 'planete');
$planete = new Planete($idPlan);
$planete->actualiser();
}
unset($ip, $idAsteroide, $idPlan);
//On vérifie que le joueur ne soit pas en mode vacances forcé
if ($planete->mv > 0) {
$SESS->close();
redirection($config["first_page"]."?mvf");
exit;
}
//NOMS ET FLOTTES
include("flottes.php");
//Envoie d'informations au template
$template->assign("alertMail", $queryMail);
$template->assign("planete", $planete);
$template->assign("planetes", $queryPlanetes);
//Calcul du temps de jeu
$tpsdejeu = time() - $planete->last_visite;
$heur = floor($tpsdejeu/3600);
$min = floor(($tpsdejeu%3600)/60);
if ($heur > 0) {
$min = $heur." h ".$min;
}
$template->assign("tpsdejeu", $min." min");
unset($tpsdejeu, $heur, $min, $queryMail);
//Récupération de la page demandée
$p = gpc('p');
//Vérification de l'isolement de la planète
if ((empty($SESS->values['isolement']) || time() >= $SESS->values['isolement']) && $p != 'operateur' && $p != 'demarrage' && $p != 'avertmulti' && $p != 'chat' && $p != 'rename' && $p != 'accueil' && $p != 'arbre' && $p != 'prochainement' && $p != 'options' && $p != 'messagerie' && $p != 'envoyer' && $p != 'classement' && $p != 'bugs' && $p != 'deconnexion') {
//TODO Si la planète est en isolement total, faire un autre message
if ($planete->isolement()) {
$template->assign("titre", "Planète isolée");
erreur("Impossible de rentrer en contact avec cette planète.<br />Réessayez vers ".date('H:i', $planete->isolement[1]));
} else {
$SESS->values["isolement"] = $planete->isolement[0];
$SESS->put();
}
}
if (isset($SESS->values["avert"]) && $p != "avertmulti" && $p != "demarrage") {
include("server/avert.php");
} else {
switch ($p) {
case "batiments":
include("game/batiments.php");
break;
case "caserne":
include("game/caserne.php");
break;
case "chantierspatial":
include("game/chantierspatial.php");
break;
case "chantierterrestre":
include("game/chantierterrestre.php");
break;
case "laboratoire":
include("game/laboratoire.php");
break;
case "arbre":
include("game/arbre.php");
break;
case "description":
include("game/description.php");
break;
case "ressources":
include("game/ressources.php");
break;
case "diplomatie":
include("game/diplomatie.php");
break;
case "gestion":
include("game/gestion.php");
break;
case "marche":
include("game/marche.php");
break;
case "flotte":
include("game/flotte.php");
break;
case "carte":
include("game/carte.php");
break;
case "alliances":
include("game/alliance.php");
break;
case "classement":
include("server/classement.php");
break;
case "rename":
include("game/rename.php");
break;
case "messagerie":
include("server/messagerie.php");
break;
case "alli_messagerie":
include("game/alliances/messagerie.php");
break;
case "options":
case "changeopt":
include("server/options.php");
break;
case "amis":
include("server/amis.php");
break;
case "destinationsrapides":
include("server/destinrapid.php");
break;
case "chat":
$page = 'chat'; $titre = 'Chat';
break;
case "alli_chat":
include("game/alliances/chat.php");
break;
case "aide":
case "faq":
include("server/aide.php");
break;
case "operateur":
include("server/operateur.php");
break;
case "prochainement":
$page = "prochainement";
$titre = "Prochainement";
break;
case "version":
include("server/version.php");
break;
case "demarrage":
include("server/demarrage.php");
break;
case "avertmulti":
include("server/avertmulti.php");
break;
case "pilori":
include("server/pilori.php");
break;
case "conditions":
include("server/conditions.php");
break;
case "regles":
include("game/regles.php");
break;
case "deconnexion":
case "logout":
include("server/logout.php");
break;
default:
include("game/accueil.php");
}
}
//On supprime les dernières variables inutiles pour la suite
unset($planete, $SESS, $bdd, $VAR, $queryPlanetes, $_POST, $_GET, $LANG);
//Inclusion de la pub et du footer
include("pub.php");
$template->assign("page", $page);
if (isset($titre)) {
$template->assign("titre", $titre);
}
$template->display("game/".$page.".tpl");
}
//Si le client n'est pas connecté au site
else {
include("server/connexion.php");
$p = gpc('p');
switch ($p) {
//Serveur principal
/* case "validation":
include('game/validation.php');
break;
case "inscription":
include('game/inscription.php');
break;
case "oubliemdp":
redirection('http://halo-battle.fr/');
break;*/
//Serveur de jeu
case "inscription":
include('server/inscription.php');
break;
case "validation":
include('server/validation.php');
break;
case "classement":
include(_FCORE."../game/classement.php");
break;
case "njoueur":
include("server/njoueur.php");
break;
case "inscription":
redirection('http://halo-battle.s-fr.com/?p=inscription');
exit;
break;
case "oubliemdp":
include("server/oubliemdp.php");
break;
case "pilori":
include("server/pilori.php");
break;
//Tous serveurs
case "conditions":
include("server/conditions.php");
break;
case "regles":
include("server/regles.php");
break;
case "changeopt":
erreur("Vous devez être connecté pour affectuer cette action !");
// no break
case "connexion":
default:
$page = 'mini';
break;
//default:
//$page = 'mini';
// redirection('?p=connexion');
// exit;
}
$template->display('cms/'.$page.'.tpl');
}