PHP probleme de comparaison avec la boucle if

Résolu/Fermé
Teifeiri Messages postés 2 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 7 octobre 2012 - 6 oct. 2012 à 19:33
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 7 oct. 2012 à 15:13
Bonjour,

J'ai un probleme de comparaison avec la boucle if.
voici un petit descriptif des pages en question.
Sur une premiere page je rempli un formulaire de un input en type="text" en POST
Sur la deuxieme page je compare la variable envoyé avec une deuxieme variable qui est un peu plus complex.
Cette deuxieme variable corespond à la premiere ligne d'un fichier .txt en UTF-8
en gros je veux :
si (1ere var == 2e var) {
ma page ;
}
else {
retour a la page du formulaire
}

Mon probleme est que je suis constement dans le "else" même quand je rentre dans le formulaire exactement la premiere ligne du fichier texte. J'ai fait quelques tests pour afficher la valeur des variables, elles ont la même valeur et sont du même type donc si qqun peut m'aider.

Voici le code en question :

<?php
	if(isset ($_POST['valider'])) {
		$fmdp = fopen("TXT/motdepasse.txt", "r") ;
		$mdp= fgets($fmdp) ;
		fclose($fmdp) ;
		$tmdp=$_POST['emstgad'];
		if ($mdp === $tmdp ) {
			echo 'bonjour' ;
		}
		else {
		echo '<form method="post" action="tourdionespacemembre.php">
			  <input type="hidden" name="erreur" value="erreur1" />
			  </form>' ;
		echo 'dans le else - '.$mdp.' - '.gettype($tmdp).' - '.$tmdp.' - '.gettype($tmdp) ;
		
		}
	}
	else {
		header('location: tourdionespacemembre.php') ;
	}
		
?>


A voir également:

3 réponses

Utilisateur anonyme
7 oct. 2012 à 00:48
Bonjour

As tu essayé :
echo strlen($mdp),' ',strlen($tmdp);
Je parie que strlen($mdp) fait un de plus, parce qu'il y a un caractère de fin de ligne (line feed, code ascii 10) qui traîne à la fin de $mdp

D'autre part, l'instruction if n'a jamais été une boucle.
0
Teifeiri Messages postés 2 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 7 octobre 2012
7 oct. 2012 à 13:00
Bien joué !!!
Il faut que mon fichier text soit codé en ANSI est la effectivement strlen($mdp) vaut 2 de plus (en UTF-8 il vaut 5 de plus).
Avec le fichier est codé en ANSI il me suffit de récupérer tous sauf les deux derniers caractères grace à la fonction substr() est c'est bon ca marche.

Pour l'encodage en UTF-8 je ne sait pas ou se trouve les 5 caractère qui different.

Merci pour ton aide et la rapidité de la réponse.
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
7 oct. 2012 à 15:13
Tu peux essayer d'utiliser la fonction trim()

https://www.php.net/manual/fr/function.trim.php
0