game/onyx2/include/server/options.php
Nigel dd61d3b66b
All checks were successful
continuous-integration/drone/push Build is passing
Ajout d'une étape de linting dans DroneCi (#3)
Corrige un doublons laissé par le rebase semi-manuel

Ajout d'une étape de linting dans DroneCi

Fix linting

Co-authored-by: Nigel Sheldon <nigelsheldon@live.fr>
Reviewed-on: https://gitea.nemunai.re/halo-battle/game/pulls/3
2020-11-21 18:54:32 +00:00

151 lines
8.2 KiB
PHP

<?php
if (!defined('INDEX')) {
header('Location: ../');
exit;
}
$titre = 'Options';
if (gpc("p") == "changeopt" && ($Un = intval(gpc('util'))) && $Un == $SESS->values["id"]) {
$Ui = gpc('auth');
$bdd = new BDD();
$bdd->escape($Ui);
$bdd->query("UPDATE user SET mdp = mdpNOUV, mdpNOUV = '', mailNOUV = '' WHERE id = $Un AND SHA1(mdpNOUV) = '$Ui' AND mdpNOUV != '';");
if ($bdd->affected() == 1) {
erreur("Votre nouveau mot de passe est maintenant actif.", "green");
}
$bdd->query("UPDATE user SET mail = mailNOUV, mailNOUV = '', mdpNOUV = '' WHERE id = $Un AND SHA1(mailNOUV) = '$Ui' AND mailNOUV != '';");
if ($bdd->affected() == 1) {
erreur("Votre nouvelle adresse électronique est maintenant active.", "green");
} else {
erreur("Ce lien a expiré !");
}
} else {
$onglet = gpc("n");
if ($onglet == "compte") {
$page = 'options/2';
if (isset($_POST["chgmdp"])) {
$bdd->reconnexion();
$user = $bdd->unique_query("SELECT mdp, mdp_var FROM $table_user WHERE id = ".$planete->id_user.";");
$bdd->deconnexion();
if (mdp($planete->pseudo, gpc('mdp_anc', 'post'), $user["mdp_var"]) == $user["mdp"]) {
$check = check_mdp($_POST['mdp_nouv'], $planete->pseudo, $_POST['mdp_conf']);
if (empty($check)) {
$new_pass = mdp($planete->pseudo, gpc('mdp_nouv', 'post'), $user["mdp_var"]);
$auth = sha1($new_pass);
$bdd->reconnexion();
$bdd->escape($new_pass);
$bdd->query("UPDATE $table_user SET mdpNOUV = '$new_pass' WHERE id = ".$planete->id_user.";");
$bdd->deconnexion();
if (!send_mail($planete->mail, "Halo-Battle :: Activation de votre nouveau mot de passe", "Bonjour ".$planete->pseudo.",\n\nVous recevez ce mail suite à votre demande de changement de mot de passe.\nCe dernier entrera en vigueur une fois que vous aurez validé ce changement en cliquant sur le lien suivant :\nhttp://".$_SERVER['HTTP_HOST']."/".$VAR['first_page']."?p=changeopt&util=".$planete->id_user."&auth=".$auth."\n\nNotez que pour que le mot de passe soit changé, il faut que vous soyez connecté sur votre compte.")) {
erreur('Erreur lors de l\'envoie du courriel de confirmation !<br /><br />Si le probl&egrave;me perciste, <a href="mailto:'.$VAR['mail_admin'].'">contactez un administrateur</a>.');
} else {
erreur('Un courriel vient d\'être envoy&eacute; à '.$planete->mail.'. Le mot de passe ne sera modifi&eacute; qu\'apr&egrave;s avoir cliqu&eacute; sur le lien d\'activation contenu dans ce courriel.', "green");
}
unset($new_pass);
} else {
erreur($check, "red", $VAR["menu"]["options"]."&n=compte");
}
} else {
erreur("L'ancien mot de passe que vous avez indiqué ne correspond pas.", "red", $VAR["menu"]["options"]."&n=compte");
}
unset($new_pass, $auth, $user);
} elseif (isset($_POST["chgmail"])) {
$bdd->reconnexion();
$user = $bdd->unique_query("SELECT mdp, mdp_var FROM $table_user WHERE id = ".$planete->id_user.";");
$bdd->deconnexion();
if (mdp($planete->pseudo, gpc('mdp_mail', 'post'), $user["mdp_var"]) == $user["mdp"]) {
$nouveauMail = gpc('mail', 'post');
if (preg_match("#^[A-Za-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $nouveauMail)) {
$bdd->reconnexion();
$bdd->escape($nouveauMail);
$result = $bdd->query("SELECT mail FROM user WHERE mail = '$nouveauMail'");
if ($result) {
$bdd->deconnexion();
erreur('Vous ne pouvez pas utiliser cette adresse mail, elle est déjà utilisée par un autre utilisateur.', "red", '?p=options');
} else {
$bdd->query("UPDATE user SET mailNOUV = '$nouveauMail' WHERE id = ".$planete->id_user.";");
$bdd->deconnexion();
$auth = sha1($nouveauMail);
//On envoie le mail de confirmation
if (!send_mail($nouveauMail, "Halo-Battle :: Activation de votre nouvelle adresse électronique", "Bonjour ".$planete->pseudo.",\n\nVous recevez ce mail suite à votre demande de changement d'adresse électronique. Cette dernière entrera en vigueur une fois que vous aurez validé ce changement en cliquant sur le lien suivant :\nhttp://".$_SERVER['HTTP_HOST']."/".$VAR['first_page']."?p=changeopt&util=".$planete->id_user."&auth=".$auth."\n\nNotez que pour que le changement soit pris en compte, il faut que vous soyez connecté sur votre compte.")) {
erreur('Erreur lors de l\'envoie du courriel de confirmation !<br /><br />Si le probl&egrave;me perciste, <a href="mailto:'.$VAR['mail_admin'].'">contactez un administrateur</a>.');
} else {
erreur('Un courriel vient d\'être envoy&eacute; à '.$nouveauMail.'. L\'adresse &eacute;lectronique ne sera modifi&eacute; qu\'apr&egrave;s avoir cliqu&eacute; sur le lien d\'activation contenu dans ce courriel.', "green");
}
}
} else {
erreur("L'adresse email que vous avez indiqué semble incorrecte.", "red", $VAR["menu"]["options"]."&n=compte");
}
} else {
erreur("Le mot de passe que vous avez indiqué ne correspond pas.", "red", $VAR["menu"]["options"]."&n=compte");
}
unset($nouveauMail, $result, $user);
} elseif (!empty($_GET["a"]) && gpc("a") == "mv") {
if (gpc("c") == $SESS->values['idvac']) {
$bdd->reconnexion();
$bdd->query("UPDATE user SET mv = 1 WHERE id = ".$planete->id_user.";");
$bdd->deconnexion();
$SESS->values['connected'] = false;
$SESS->put();
erreur('Le mode vacances est maintenant actif sur votre compte.<br /><br />Vous pourez vous reconnecter sur votre compte à partir de<br />'.strftime("%A %d %B à %H:%M", $planete->last_visite+259200).'<br /><br />Bonnes vacances !', "green", '?index', 10000);
} else {
erreur("Impossible d'authentifier le placement en mode vacances !", "red", $VAR["menu"]["options"]."&n=compte");
}
} elseif (!empty($_GET["a"]) && gpc("a") == "dl") {
if (gpc("c") == $SESS->values['idvac']) {
$bdd->reconnexion();
$bdd->query("UPDATE user SET mv = -2 WHERE id = ".$planete->id_user.";");
$bdd->deconnexion();
erreur('Votre compte sera supprimé le <br />'.strftime("%A %d %B à %H:%M", mktime(date('H', $VAR["time_maintenance"]), date('i', $VAR["time_maintenance"]), 0, date('n', time()+86400*2), date('d', time()+86400*2), date('y', time()+86400*2))).'.', "green");
} else {
erreur("Impossible d'authentifier la supression du compte !", "red", $VAR["menu"]["options"]."&n=compte");
}
}
$template->assign('idvac', $SESS->values['idvac'] = sha1(rand(123456789, 9876543210).'ß‘}☻'.time()));
$SESS->put();
} elseif ($onglet == "jeu") {
if (!empty($_POST)) {
$options = 0;
foreach ($_POST as $opt) {
$options += intval($opt);
}
$planete->options = $options;
$planete->addModifUser("options");
}
$page = 'options/3';
} elseif ($onglet == "notif") {
$page = 'options/4';
if (isset($_POST["notif"])) {
$planete->envoyerMail = 0;
if (!empty($_POST["rapport"])) {
$planete->envoyerMail += 1;
}
if (!empty($_POST["mp"])) {
$planete->envoyerMail += 2;
}
$planete->addModifUser("envoyerMail");
}
} else {
$onglet = "ext";
$page = 'options/1';
}
$template->assign("onglet", $onglet);
}