Kalut à vous !!

Voila mon piti problème, je dois stocker plusieurs mot de passe dans un fichier .txt, puis les récupérer dans ma page .php afin de les traiter, sauf que quand je compare le mot de passe rentré par l'utilisateur et ceux dans mon fichier seul le dernier marche. J'ai donc voulu voir ce que ma page obtenait comme mot de passe avec un var_dump($mdp), et voila ce que j'obtiens

string 'tutu

' (length=6)

string 'toto

' (length=6)

string 'titi' (length=4)

Donc il récupère bien les mots de passe, mais il rajoute deux caractères a toutes les strings sauf a la dernière

Je vous donne les fichiers de traitements et de mot de passe.

Page 1 : cette page ne sert que a acceder a la deuxième, elle n'a aucune influence sur mon pb

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Fiche d'envoie vers cible</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
	 
	<form action="testIndex.php" method="post">
	<p>
	<select name="choix">
    <option value="Choix1">Choix 1</option>
    <option value="Choix2">Choix 2</option>
    <option value="Choix3">Choix 3</option>
    <option value="Choix4">Choix 4</option>
    </select>
	<input type="submit" value="Valider"/>
	</p>
	</form>
	 
    </body>
</html>


page 2 : C'est la page qui traite le mdp

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Rock</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body> 
	 
	<?php
		
		function EnvoieFormulaire ($mdp) {
			
			?>
			<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
			<p>
			<input type="password" name="<?php echo $mdp; ?>">
			<input type="submit" value="Valider">
			</form>
			</p>
			<?php
			}
			
		$monFichier = fopen('MotDePasse.txt', 'r'); // 1 : on ouvre le fichier		
		$mdp = fgets($monFichier); // 2 : on récupere le mot de passe
		$mdp2 = fgets($monFichier); // 2 : on récupere le mot de passe
		$mdp3 = fgets($monFichier); // 2 : on récupere le mot de passe
		fclose($monFichier); // 3 : quand on a fini de l'utiliser, on ferme le fichier
		
		//$monFichier = fopen('MotDePasse2.txt', 'r'); // 1 : on ouvre le fichier		
		//$mdp2 = fgets($monFichier); // 2 : on récupere le mot de passe
		//fclose($monFichier); // 3 : quand on a fini de l'utiliser, on ferme le fichier
	
		//$monFichier = fopen('MotDePasse3.txt', 'r'); // 1 : on ouvre le fichier		
		//$mdp3 = fgets($monFichier); // 2 : on récupere le mot de passe
		//fclose($monFichier); // 3 : quand on a fini de l'utiliser, on ferme le fichier
	
		if (isset($_POST['choix']) AND $_POST['choix']=='Choix1'){//Est ce que choix1 a été validé
			var_dump($mdp);
			var_dump($mdp2);
			var_dump($mdp3);
			EnvoieFormulaire ('mot_de_passe_1');}
			
			
			
		if (isset($_POST['choix']) AND $_POST['choix']=='Choix2'){//Est ce que choix1 a été validé
			EnvoieFormulaire ('mot_de_passe_2');}
			

		if (isset($_POST['choix']) AND $_POST['choix']=='Choix3'){//Est ce que choix1 a été validé
			EnvoieFormulaire ('mot_de_passe_3');}
			
		
		else if (isset($_POST['choix']) AND $_POST['choix']=="Choix4"){//Est ce que choix4 a été validé
			echo '<p>Choix 4 non implementé</p>';
			}
		
		elseif (!isset($_POST['choix']) AND isset($_POST['mot_de_passe_1']) AND ($_POST['mot_de_passe_1']==$mdp OR $_POST['mot_de_passe_1']==$mdp2 OR $_POST['mot_de_passe_1']==$mdp3)){
			
			echo "<h1> LE MDP MARCHE HOURRA :</h1>";
			echo "<p><strong>Choix1 marche et mdp1 marche</strong></p> ";
			} 

		elseif (!isset($_POST['choix']) AND isset($_POST['mot_de_passe_2']) AND ($_POST['mot_de_passe_2']==$mdp OR $_POST['mot_de_passe_2']==$mdp2 OR $_POST['mot_de_passe_2']==$mdp3)){
	
			echo "<h1> LE MDP MARCHE HOURRA :</h1>";
			echo "<p><strong>Choix2 marche et mdp2 marche</strong></p> ";
			} 

		elseif (!isset($_POST['choix']) AND isset($_POST['mot_de_passe_3']) AND ($_POST['mot_de_passe_3']==$mdp OR $_POST['mot_de_passe_3']==$mdp2 OR $_POST['mot_de_passe_3']==$mdp3)){
	
			echo "<h1> LE MDP MARCHE HOURRA :</h1>";
			echo "<p><strong>Choix3 marche et mdp3 marche</strong></p> ";
			} 			
			
		elseif (!isset($_POST['choix']) AND isset($_POST['mot_de_passe_1']) AND ($_POST['mot_de_passe_1']!==$mdp OR $_POST['mot_de_passe_1']!==$mdp2 OR $_POST['mot_de_passe_1']!==$mdp3)){
	
			echo "<h1> Mauvais mot de passe 1 veuillez le retaper :</h1>";
			EnvoieFormulaire ('mot_de_passe_1');}

				
		elseif (!isset($_POST['choix']) AND isset($_POST['mot_de_passe_2']) AND ($_POST['mot_de_passe_2']!==$mdp OR $_POST['mot_de_passe_2']!==$mdp2 OR $_POST['mot_de_passe_2']!==$mdp3)){
	
			echo "<h1> Mauvais mot de passe 2 veuillez le retaper :</h1>";
			EnvoieFormulaire ('mot_de_passe_2');}

			
		elseif (!isset($_POST['choix']) AND isset($_POST['mot_de_passe_3']) AND ($_POST['mot_de_passe_3']!==$mdp OR $_POST['mot_de_passe_3']!==$mdp2 OR $_POST['mot_de_passe_3']!==$mdp3)){
	
			echo "<h1> Mauvais mot de passe 2 veuillez le retaper :</h1>";
			EnvoieFormulaire ('mot_de_passe_3');}
			
    
    ?>
     
         
    </body>
</html>


Le fichier .txt : C'est juste les trois mot de passe chacun sur une ligne différente

tutu
toto
titi




Voili, voilou, merci de votre aide Smiley cligne
Tes deux caractères en plus que tu récupères, ça ne serait pas des \n (retour à la ligne) par hasard? (ce qui expliquerait pourquoi dans ton var_dump tu as des retours à la ligne).
C'est fort possible.
Quand je lis caractère par caractère, il m'affiche mon mot et de caractère vide ' ', et si je rajoute deux espaces vide a mon mot de passe ou \n il me dit mot de passe invalide.
De plus le saut de ligne est obligatoire. Je ne peux pas lire mon fichier caractère par caractère car il faudrait que je connaisse la taille exacte de tout les mots de passe ce qui complexifierai grandement le code si on veut changer ou rajouter un mot de passe.
Essaie ça:
$mdp = fgets($monFichier); // 2 : on récupere le mot de passe
$mdp = trim($mdp);

pour chacun de tes mots de passe.
Effectivement ça marche.

Merci à vous Smiley cligne

Sinon il y avait une autre methode, lire tout le fichier avec
$contenu=file_get_contents('MotDePasse.txt');


utiliser explode pour recuperer chaque mot de passe dans un tableau, le parcours et stocker tout les mot de passe dans des variables.
Modifié par Heps (10 Jul 2013 - 16:56)
Oui ça peut le faire aussi je pense.

Maintenant, dans ton cas où tu n'as que 3 lignes, ça va, mais si on a un gros fichier, il faut voir si c'est optimisé niveau mémoire, puisque ça renvoie l'intégralité du document.