values['connected'])) define("xCSRF", true); require_once(_FCORE."common.php"); //Pistage Guillaume if ($_SERVER["REMOTE_ADDR"] == "82.245.190.225" || $_SERVER["REMOTE_ADDR"] == "84.101.175.59" || $_SERVER["REMOTE_ADDR"] == "86.214.198.131" || (isset($sess->values['id']) && ($sess->values['id'] == "21" || $sess->values['id'] == "23"))) { file_log(var_export($_REQUEST,TRUE),0 , _FCORE."logs/users"); } //On vérifie si le client est connecté sur le site if (isset($sess) && isset($sess->values['connected']) && $sess->values['connected'] && !empty($sess->values['id']) && !empty($sess->values['race']) && !empty($sess->level) && !empty($sess->values['idPlan'])) { //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']))) { include(_FCORE."../game/jeu/logout.php"); } elseif (!empty($HB_login)) { header('Location: ./'.$config['first_page']); exit; } $race = $sess->values['race']; //Inclusion des formules require_once(_FCORE."../game/vars.php"); //On inclus les différentes classes include_once(_FCORE."../game/Class/class.file.php"); include_once(_FCORE."../game/Class/class.user.php"); include_once(_FCORE."../game/Class/class.planete.php"); //Récupération d'informations au sujet de l'utilisateur $id_user = $sess->values['id']; $template->assign('auth_level', $sess->level); $ip = $_SERVER["REMOTE_ADDR"]; $bdd->connexion(); $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;"); if (isset($_POST['Cplanete'])) { $idPlanTest = intval($_POST['Cplanete']); if ($bdd->unique_query("SELECT * FROM $table_planete WHERE id_user = $id_user AND id = $idPlanTest;")) { $sess->values['idPlan'] = $idPlanTest; $sess->put(); $template->assign('contenu', ''); $template->assign('page','vp'); $template->assign('race', $race); $template->display('game/vp.tpl'); exit; } } $idPlan = $sess->values['idPlan']; $queryMail = $bdd->unique_query("SELECT COUNT(id) AS nombre FROM $table_mail WHERE destinataire = $id_user AND vu = '1';"); $queryPlanetes = $bdd->query("SELECT * FROM $table_planete WHERE id_user = '$id_user' ORDER BY id ASC;"); $bdd->deconnexion(); $planete = new Planete($idPlan); //On vérifie que le joueur ne soit pas en mode vacances forcé if ($planete->mv > 0) { $sess->close(); header('Location: '.$config['first_page'].'?mvf'); exit; } //Chargement asteroide if ($planete->id_alliance) { $bdd->connexion(); $template->assign('asteroide', $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = ".$planete->id_alliance.";")); $bdd->deconnexion(); } ///require_once(_FCORE."../game/ressources.php"); ///require_once(_FCORE."../game/constructions.php"); require(_FCORE."../game/noms.php"); //> require_once(_FCORE."../game/flottes.php"); $template->assign('alertMail', $queryMail['nombre']); $template->assign('planete', $planete); $template->assign('planetes', $queryPlanetes); $template->assign('nomsressources', $ressourc); $p = gpc('p'); //Isolement de la planète if ($planete->isolement && $p != 'rename' && $p != 'accueil' && $p != 'arbre' && $p != 'prochainement' && $p != 'options' && $p != 'messagerie' && $p != 'envoyer' && $p != 'classement' && $p != 'bugs' && $p != 'deconnexion') { $template->assign('titre','Planète isolée'); $isolement = explode(' ', $planete->isolement); //TODO Si la planète est en isolement total, faire un autre message erreur('Impossible de rentrer en contact avec cette planète.
Réessayez vers '.date('H:i', $isolement[1])); } //Calcul du temps de jeu $tpsdejeu = time() - $planete->last_visite; $heur = floor($tpsdejeu/3600); $min = floor(($tpsdejeu - $heur*3600)/60); if ($heur > 0) $min = $heur.' h '.$min; $template->assign('tpsdejeu', $min.' min'); $template->assign('race', $planete->race); switch($p){ case 'prochainement': $page = 'prochainement'; $titre = 'Prochainement'; break; case 'version': include(_FCORE."../game/jeu/version.php"); break; case 'rename': include(_FCORE."../game/jeu/rename.php"); break; case 'description': include(_FCORE."../game/jeu/description.php"); break; case 'batiments': include(_FCORE."../game/jeu/batiments.php"); break; case 'caserne': include(_FCORE."../game/jeu/caserne.php"); break; case 'chantierspatial': include(_FCORE."../game/jeu/chantierspatial.php"); break; case 'chantierterrestre': include(_FCORE."../game/jeu/chantierterrestre.php"); break; case 'defenses': include(_FCORE."../game/jeu/defenses.php"); break; case 'laboratoire': include(_FCORE."../game/jeu/laboratoire.php"); break; case 'arbre': include(_FCORE."../game/jeu/arbre.php"); break; case 'gestion': include(_FCORE."../game/jeu/gestion.php"); break; case 'ressources': include(_FCORE."../game/jeu/ressources.php"); break; case 'flotte': include(_FCORE."../game/jeu/flotte.php"); break; case 'destinationsrapides': include(_FCORE."../game/jeu/destinrapid.php"); break; case 'amis': include(_FCORE."../game/jeu/amis.php"); break; case 'carte': include(_FCORE."../game/jeu/carte.php"); break; case 'bourse': include(_FCORE."../game/jeu/bourse.php"); break; case 'options': include(_FCORE."../game/jeu/options.php"); break; case 'changeopt': include(_FCORE."../game/jeu/options_change.php"); break; case 'messagerie': include(_FCORE."../game/jeu/messagerie.php"); break; case 'envoyer': include(_FCORE."../game/jeu/envoyer.php"); break; case 'alliances': include(_FCORE."../game/jeu/alliances.php"); break; case 'classement': include(_FCORE."../game/jeu/classement.php"); break; case 'bugs': include(_FCORE."../game/jeu/bugs.php"); break; case 'util': include(_FCORE."../game/jeu/util.php"); break; case 'chat': $page = 'chat'; $titre = 'Chat'; break; case 'faq': include(_FCORE."../game/jeu/aide.php"); break; case 'simulateur': include(_FCORE."../game/jeu/simulateur.php"); break; case 'deconnexion': include(_FCORE."../game/jeu/logout.php"); break; case 'operateur': include(_FCORE."../game/jeu/operateur.php"); break; case "demarrage": include(_FCORE."../game/jeu/demarrage.php"); break; case "avertmulti": include(_FCORE."../game/jeu/avertmulti.php"); break; case "pilori": include(_FCORE."../game/jeu/pilori.php"); break; case "conditions": include(_FCORE."../game/jeu/conditions.php"); break; case "regles": include(_FCORE."../game/jeu/regles.php"); break; default: include(_FCORE."../game/jeu/accueil.php"); } $template->assign('page', $page); $template->assign('titre', $titre); $template->display('game/'.$page.'.tpl'); } //Si le joueur n'est pas connecté au site else { //On traite la demande de loggin de l'utilisateur if ((isset($_GET['l']) && isset($_GET['p'])) || (isset($_POST['HB_login']) && isset($_POST['HB_password']))) { //Récupération des données POST ou GET if (isset($_POST['HB_login']) && isset($_POST['HB_password']) && gpc('p') == 'connexion') { $HB_login = gpc('HB_login', 'post'); $HB_password = gpc('HB_password', 'post'); $HB_auth = hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j').$_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]); } else { $HB_login = gpc('l'); if (is_numeric('0x'.gpc('p'))) $HB_password = cxor(hexstr(gpc('p')), date('WYDj')); $HB_auth = gpc('a'); } if (empty($HB_login) || empty($HB_password)) { $template->assign('message','Nom d\'utilisateur ou mot de passe incorrect.

'); $template->assign('couleur','red'); $template->display('cms/erreur.tpl'); exit; } elseif (hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j').$_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]) != $HB_auth && hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j', time()-300)) != $HB_auth) { $template->assign('message','Impossible d\'authentifier la connexion !

Si le problème perciste, contactez un administrateur.'); $template->assign('couleur','red'); $template->display('cms/erreur.tpl'); exit; } else { $ipe = $_SERVER['REMOTE_ADDR']; $bdd->connexion(); $bruteforce = $bdd->unique_query("SELECT nombre FROM securite_identification WHERE ip = '$ipe';"); if ($bruteforce['nombre'] >= 15) { $fichier = fopen(_FCORE."ban.xlist",'a+'); fwrite($fichier, $_SERVER['REMOTE_ADDR']."\n\r"); fclose($fichier); } $bdd->escape($HB_login); if (!$var = $bdd->unique_query("SELECT mdp_var, mdp FROM $table_user WHERE pseudo = '$HB_login';")) { if (isset($bruteforce['nombre'])) $bdd->query("UPDATE securite_identification SET nombre = nombre + 1 WHERE ip = '$ipe';"); else $bdd->query("INSERT INTO securite_identification VALUES ('$ipe', '1', '".time()."');"); $bdd->deconnexion(); $template->assign('message','Nom d\'utilisateur ou mot de passe incorrect.'); $template->assign('couleur','red'); $template->assign('script',''); $template->display('cms/erreur.tpl'); exit; } $bdd->deconnexion(); $HB_password = mdp($HB_login, $HB_password, $var['mdp_var']); $time = time(); $ip = $_SERVER["REMOTE_ADDR"]; $bdd->connexion(); $bdd->escape($HB_password); //Limiter le nombre de personnes en ligne simutanément if ($enligne['enligne'] > 1500) { $template->assign('message','Il y a actuellement trop de monde connecté sur Halo-Battle. Pour permettre aux joueurs une navigation convenable, nous vous remercions de revenir plus tard.'); $template->assign('couleur','red'); $template->display('cms/erreur.tpl'); exit; } $resultat = $bdd->unique_query("SELECT id, race, mv, last_visite, auth_level, raisonmv FROM $table_user WHERE pseudo = '$HB_login' AND mdp = '$HB_password';"); if ($resultat) { $id = $resultat['id']; $reqPlan = $bdd->query("SELECT id, file_bat, file_tech, file_cas, file_vais, file_ter, timestamp FROM $table_planete WHERE id_user = '$id' ORDER BY id ASC;"); $resultatP = $reqPlan[0]; $race = $resultat['race']; if (!$reqPlan) { $bdd->deconnexion(); $template->assign('message','Impossible de trouver votre planète !'); $template->assign('couleur','red'); $template->display('cms/erreur.tpl'); exit; } if ($resultat['mv'] > 0) { if (($resultat['last_visite'] + 259200 > time() || $resultat['mv'] == 3) && $resultat['auth_level'] < 2) { if ($resultat['mv'] == 3) $template->assign('message','Vous êtes définitivement banni de cette galaxie pour '.$resultat['raisonmv'].'. Vous ne pouvez plus vous reconnecter sur votre compte'); elseif ($resultat['mv'] == 2) $template->assign('message','Un opérateur a placé votre compte en mode vacances pour '.$resultat['raisonmv'].'. Vous ne pouvez pas vous reconnecter sur votre compte avant le
'.strftime("%A %d %B à %H:%M", $resultat['last_visite']+259200)); else $template->assign('message','Vous ne pouvez pas sortir du mode vacances avant le
'.strftime("%A %d %B à %H:%M", $resultat['last_visite']+259200)); $template->assign('couleur','red'); $template->display('cms/erreur.tpl'); exit; } $bdd->query("UPDATE $table_user SET mv = '0' WHERE id = '$id';"); $bdd->query("UPDATE $table_planete SET timestamp = '".time()."' WHERE id_user = '$id';"); $bdd->deconnexion(); //On fait repartir à 0 les files d'attente include_once(_FCORE."../game/vars.php"); include_once(_FCORE."../game/Class/class.file.php"); include_once(_FCORE."../game/Class/class.user.php"); include_once(_FCORE."../game/Class/class.planete.php"); foreach ($reqPlan as $plan){ if (!empty($plan['file_bat'])) { $file = new File($plan['file_bat']); $fileBat = $file->reajusteVacances($plan['timestamp']); } else $fileBat = ''; if (!empty($plan['file_tech'])) { $file = new File($plan['file_tech']); $fileTech = $file->reajusteVacances($plan['timestamp']); } else $fileTech = ''; if (!empty($plan['file_cas'])) { $file = new File($plan['file_cas']); $fileCas = $file->reajusteVacances($plan['timestamp']); } else $fileCas = ''; if (!empty($plan['file_vais'])) { $file = new File($plan['file_vais']); $fileVais = $file->reajusteVacances($plan['timestamp']); } else $fileVais = ''; if (!empty($plan['file_ter'])) { $file = new File($plan['file_ter']); $fileTer = $file->reajusteVacances($plan['timestamp']); } else $fileTer = ''; $idPlan = $plan['id']; $bdd->connexion(); $bdd->escape($fileBat); $bdd->escape($fileTech); $bdd->escape($fileCas); $bdd->escape($fileVais); $bdd->escape($fileTer); $bdd->query("UPDATE $table_planete SET file_bat = '$fileBat', file_tech = '$fileTech', file_cas = '$fileCas', file_vais = '$fileVais', file_ter = '$fileTer' WHERE id = $idPlan;"); $bdd->deconnexion(); //On met à jour la planète pour tout le reste $plan = new Planete($plan['id'], true); } } //On met à jour toutes les planètes si le nombre de joueurs n'est pas trop important elseif ($enligne['enligne'] > 400) { include_once(_FCORE."../game/vars.php"); include_once(_FCORE."../game/Class/class.file.php"); include_once(_FCORE."../game/Class/class.user.php"); include_once(_FCORE."../game/Class/class.planete.php"); foreach ($reqPlan as $plan){ $plan = new Planete($plan['id'], true); } } $plan = null; $bdd->connexion(); $bdd->query("UPDATE $table_user SET last_visite = '$time', last_ip = '$ip' WHERE id = $id;"); $bdd->query("INSERT INTO $table_registre_identification (id_util, ip) VALUES (".$id.",'".$ip."');"); $multi = $bdd->unique_query("SELECT COUNT(*) FROM $table_registre_identification WHERE ip = '$ip' GROUP BY ip, id_util;"); $message = $bdd->unique_query("SELECT time FROM $table_messages_demarrage ORDER BY time DESC LIMIT 1;"); $bdd->deconnexion(); $sess->values['connected'] = TRUE; $sess->values['id'] = $resultat['id']; $sess->values['race'] = $resultat['race']; $sess->values['idPlan'] = $resultatP['id']; //Si on détecte le multi-compte, on interdit l'accès au panneau d'admin if (empty($multi)) $sess->level = 1; else $sess->level = $resultat['auth_level'] + 1; $sess->put($resultat['id']); if ($message['time'] > $resultat['last_visite']) header('Location: ./'.$config['first_page'].'?p=demarrage'); elseif (empty($multi)) header('Location: ./'.$config['first_page'].'?p=avertmulti'); else header('Location: ./'.$config['first_page'].'?p=accueil'); exit; } else { $bdd->deconnexion(); $template->assign('message','Nom d\'utilisateur ou mot de passe incorrect.'); $template->assign('couleur','red'); $template->assign('script',''); $template->display('cms/erreur.tpl'); exit; } } } $p = gpc('p'); switch($p){ //Serveur principal /* case "validation": include('game/validation.php'); break; case "inscription": include('game/inscription.php'); break; case "oubliemdp": header('Location: http://halo-battle.fr/'); break;*/ //Serveur de jeu case "connexion": $page = 'mini'; break; case "njoueur": include(_FCORE."../game/jeu/njoueur.php"); break; case "inscription": header('Location: http://halo-battle.s-fr.com/?p=inscription'); exit; break; case "oubliemdp": include(_FCORE."../game/jeu/oubliemdp.php"); break; //Tous serveurs case "conditions": include(_FCORE."../game/jeu/conditions.php"); break; case "regles": include(_FCORE."../game/jeu/regles.php"); break; default: //$page = 'mini'; header('Location: http://www.halo-battle.fr/'); exit; } $template->display('cms/'.$page.'.tpl'); } echo("\n"); ?>