[RESOLU] Accès limité par mot de passe

Petit nouveau ! | 4 Messages

20 août 2020, 13:53

Bonjour à tous,

Je me suis lancé en autodidacte et ai su jusqu'à présent me débrouiller mais là je me retrouve confronté à un mur.

J'ai voulu créer un formulaire demandant de rentrer un mot de passe, que je stocke dans un cookie, afin que les pages à accès restreint aient juste à vérifier si le cookie contient bien le bon mot de passe (et éviter à l'utilisateur de rentrer le mot de passe à chaque page). Ce que j'ai fait marchait très bien en local, sur Wampserver, mais quand je suis passé sur serveur là ça ne marche plus. D'où peut venir cette erreur ??? :-k :-k

Stockage du mot de passe quand l'utilisateur clique sur envoyer :
		if ($_SERVER["REQUEST_METHOD"]=="POST") {
			$mot_de_passe = test_input($_POST["mot_de_passe"]);
			setcookie("mdp", $mot_de_passe, time() + 3600, "/");
			if ($mot_de_passe ==  "abcd"){
				header("Location: Bag'Art - Accueil.php");
			}
			else{
				header("Location: Bag'Art - MDP.php");
			}
		}

		function test_input($data) {
			$data = trim($data);
			$data = stripslashes ($data);
			$data = htmlspecialchars($data);
			return $data;
		}
		
Formulaire de demande :
<form method="post"  action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
			<input type="password" name="mot_de_passe" required placeholder="Renseigner le mot de passe"> <input type="submit" name="Valider" value="Valider">
		</form>

Et vérification sur l'autre page si le cookie contient bien le mot de passe :
<?php
        if ($_COOKIE["mdp"] == "abcd") {   
    ?>

Message d'erreur sur la page hébergée quand j'envoie le mot de passe :

Warning: Cannot modify header information - headers already sent by (output started at /home/users/00/38/ec/home/www/Bag'Art - MDP.php:1) in /home/users/00/38/ec/home/www/Bag'Art - MDP.php on line 43

Warning: Cannot modify header information - headers already sent by (output started at /home/users/00/38/ec/home/www/Bag'Art - MDP.php:1) in /home/users/00/38/ec/home/www/Bag'Art - MDP.php on line 48



Je vous remercie grandement par avance :pouce:

Mammouth du PHP | 1406 Messages

20 août 2020, 14:15

avec un
exit();
après le header ?

Petit nouveau ! | 4 Messages

20 août 2020, 14:37

Non je n'ai pas mis de exit(). Il faudrait en mettre un ?
Pour l'instant, il me semble avoir fait en sorte que mon code amène sur la page accueil si le mdp est ok et reconduise sur la page MDP s'il n'est pas ok.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8555 Messages

20 août 2020, 16:20

Après un header("Location:..."), il faut TOUJOURS mettre un exit; ou un die(); car si tu demandes une redirection au navigateur il ne faut pas lui renvoyer du code HTML ensuite.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 33 Messages

21 août 2020, 15:29

Salut,

Perso, quand il s'agit de mot de passe pour filtrer qui vient (ou ne vient pas) sur une page d'administration, j'utilise les fichiers .htaccess et .htpasswrd à la racine du serveur.

Un bon exemple ici, sur Openclassroom : https://openclassrooms.com/fr/courses/9 ... n-htaccess
-- Ecumastor

Petit nouveau ! | 4 Messages

21 août 2020, 17:24

Après un header("Location:..."), il faut TOUJOURS mettre un exit; ou un die(); car si tu demandes une redirection au navigateur il ne faut pas lui renvoyer du code HTML ensuite.
Merci beaucoup, cette réponse m'a bien guidé dans mes recherches. J'ai pu me débloquer, d'autres choses n'allaient pas mais en y travaillant dessus, j'ai fini par résoudre les problèmes petit à petit.

Petit nouveau ! | 4 Messages

21 août 2020, 17:27

Salut,

Perso, quand il s'agit de mot de passe pour filtrer qui vient (ou ne vient pas) sur une page d'administration, j'utilise les fichiers .htaccess et .htpasswrd à la racine du serveur.

Un bon exemple ici, sur Openclassroom : https://openclassrooms.com/fr/courses/9 ... n-htaccess

J'étais déjà tombé dessus au tout début. Je n'avais pas réussi à le faire fonctionner du premier coup. Mais je m'y serais confronté à nouveau si je n'avais pas réussi autrement. Merci de l'aide tout de même :pouce: