caractères HTML dangereux supprimés // -> empêche validation par erreur d'une chaine "vide" require('controller/Security.php'); $password = Security::secureString($_POST['motdepasse']); $password = removeSpacesTabsCRLF($_POST['motdepasse']); // enregistrement et redirection if(isset($password) && $password == $_POST['motdepasse']) { hashNewPassword($_POST['motdepasse']); header('Location: index.php'); exit(); } else { $error = 'bad_password'; } } } else // première fois {} // inséré dans $captchaHtml puis dans $formulaireNouveauMDP $captcha = createCaptcha(); // enregistrement de la réponse du captcha pour vérification saveSolutionCaptcha($captcha[2]); // II - affichage $title = 'Bienvenue Melaine Favennec'; $subHeading = 'Veuillez choisir le mot de passe que vous utiliserez pour gérer le site.'; // même vue que la fonction changerMotDePasse() require('view/password.php'); echo($header); if($error != '') { sleep(1); echo($error_messages[$error]); } echo($formulaireNouveauMDP); echo($error_messages['forbidden_characters']); echo($footer); } function connect() { // I - traitement // déjà en mode admin global $cookie; // nom du cookie dans cookies.php if(isset($_COOKIE[$cookie])) { header('Location: index.php?page=' . $_GET['from']); exit(); } // contrôle de la saisie $file_name = 'data/tmp/solution.txt'; $error = ''; if(file_exists($file_name)) { $captcha_solution = file_get_contents($file_name); unlink($file_name); if(empty($_POST)) // page rechargée {} elseif(!isset($_POST['captcha']) || controlCaptchaInput() == 0) { $error = 'error_non_valid_captcha'; } elseif($_POST['captcha'] != $captcha_solution) { $error = 'bad_solution_captcha'; } elseif(!isset($_POST['motdepasse']) || empty($_POST['motdepasse'])) { $error = 'bad_password'; } else { // enregistrement et redirection if(testPassword($_POST["motdepasse"])) { session_name($cookie); session_start(); header('Location: index.php?page=' . $_GET['from']); exit(); } else { $error = 'bad_password'; } } } else // première fois {} // inséré dans $captchaHtml puis dans $formulaireNouveauMDP $captcha = createCaptcha(); // enregistrement de la réponse du captcha pour vérification saveSolutionCaptcha($captcha[2]); // II - affichage $title = "Connexion"; $subHeading = "Veuillez saisir votre mot de passe pour pouvoir apporter des modifications au site."; // même vue que la fonction changerMotDePasse() require('view/password.php'); echo($header); //echo($warning_messages['message_disconnect']); if($error != '') { sleep(1); echo($error_messages[$error]); } echo($formulaireConnexion); echo($warning_messages['message_cookie']); echo($warning_messages['private_browsing']); echo($footer); } function saveSolutionCaptcha(string $solution) { $file_name = 'data/tmp/solution.txt'; if(!file_exists($file_name)) { touch($file_name); chmod($file_name, 0600); } file_put_contents($file_name, $solution); } function changePassword() { // I - traitement // vérification supplémentaire global $cookie; // nom du cookie dans cookies.php if(!isset($_SESSION)) { deleteCookie($cookie); header('Location: index.php?page=' . $_GET['from']); exit(); } // contrôle de la saisie $error = ''; $success = false; if(empty($_POST)) // première fois ou page rechargée {} elseif(!isset($_POST['nouveauMotdepasse']) || empty($_POST['nouveauMotdepasse'])|| !isset($_POST['ancienMotdepasse']) || empty($_POST['ancienMotdepasse'])) { $error = 'bad_password'; } else { require('controller/Security.php'); $newPassword = Security::secureString($_POST['nouveauMotdepasse']); $newPassword = removeSpacesTabsCRLF($_POST['nouveauMotdepasse']); if(isset($newPassword) && $newPassword !== $_POST['nouveauMotdepasse']) // erreur de conformité { $error = 'forbidden_characters'; } else { if(testPassword($_POST["ancienMotdepasse"])) { // enregistrement et confirmation hashNewPassword($_POST["nouveauMotdepasse"]); $success = true; } else { $error = 'bad_password'; } } } // II - affichage $title = "Nouveau mot de passe"; $subHeading = "Veuillez saisir votre actuel mot de passe suivi du nouveau."; require('view/password.php'); echo($header); if($error != '') { sleep(1); echo($error_messages[$error]); } elseif($success) { echo($alertJSNewPassword); } echo($formulaireModifMDP); echo($footer); } function hashNewPassword(string $newPassword) { // hachage $newHashedPassword = password_hash($newPassword, PASSWORD_DEFAULT); // écriture $file = fopen('data/password.txt', 'w'); fputs($file, $newHashedPassword); fclose($file); chmod('data/password.txt', 0600); } function testPassword(string $password): bool { $hashedPassword = file_get_contents('data/password.txt'); if(password_verify($password, $hashedPassword)) { return true; } else { return false; } }