PHP probleme de comparaison avec la boucle if

Résolu
Teifeiri Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
arthezius Messages postés 3538 Date d'inscription   Statut Membre Dernière intervention   -
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
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   475
 
Tu peux essayer d'utiliser la fonction trim()

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