Php, structure If et comparaison de variables

Signaler
Messages postés
5
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
4 mai 2008
-
Messages postés
5
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
4 mai 2008
-

8 réponses

Messages postés
5
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
4 mai 2008

Bon j'ai rien compris au système de post ....
Donc je re re re écrit :

Il s'agit d'un code php tout con pour vérifier le login et pwd qu'un membre à saisi. Le problème vient du if de comparaison de $pass (pass saisi) et $password (pass dans la bdd)... J'écho les valeurs, elles sont pareilles mais le if considère qu'elles sont pas égales ^^:

Mon code:

<?php

// pensez a ouvrir une connexion vers mysql ici
// voir les exercices dans le menu de droite pour cela.
include('connect.php');
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
{
$login=$_POST['login'];
$pass=$_POST['pass'];
// on recupère le password de la table qui correspond au login du visiteur
$sql = "select MDP_USER from USERS where PSEUDO_USER='".$login."'";
$req = odbc_exec($sqlconnect,$sql);
$row = odbc_fetch_object($req);
$password=$row->MDP_USER;
echo ($password);
echo ($pass);
if($pass == $password)
{
// session_start();
// $_SESSION['login'] = $login;

echo 'Vous etes bien logué';
}
else {
echo 'Mauvais login / password. Merci de recommencer

';
exit;
}
}
else
{
echo 'Vous avez oublié de remplir un champ.

';
exit;
}

L'affichage:

mdp01 mdp01

Mauvais login / password. Merci de recommencer
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
pourquoi tu t'es mis en réponse accèpté ? ton problème est résolu ?

Si t'a besoin d'aide, MP !!!
Un forum...
Messages postés
5
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
4 mai 2008

Ouais non j'ai pas fait gaffe ...
Mon problème n'est toujours pas résolu malheureusement ...
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
Salut,

je vois pas ou est le pb, par contre es ce que l'espace entre les deux pseudos est volontaire ?
Si non ça veut dire qu'un de tes mdp contient un espace !

a++

Si t'a besoin d'aide, MP !!!
Un forum...
Messages postés
5
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
4 mai 2008

En fait ça y est j'ai trouvé !

J'ai affiché avec des var_dump($password); var_dump($pass); et j'ai remarqué que un été en string(32) et l'autre en string(5) alors j'ai trouvé une solution barbare pour l'instant j'ai rajouté des espace au password saisie jusqu'à arrivé a un string(32).

$pass=$_POST['pass'];
$espace=(32-strlen($pass));
for ($i=1;$i<=$espace;$i++)
{
$pass=$pass." ";
}

Si vous avez mieux comme solution n'hésitez pas !!
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
Salut,

Déja tes deux mots de passes sont en clair ? Si la solution que tu viens de dire fonctionne, alors

if(trim($pass) == trim($password)) fonctionnera tout aussi bien.
 
Au fait, à la place d'une boucle tu aurais pu simplement faire $pass .= str_repeat(' ',32-strlen($pass));

Pour infos Trim enlève les espaces superflus au début et à la fin d'une chaine.
str_repeat répète une chaine N fois.

Voir php.net pour plus d'infos

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
Yoman64++ comme d'habitude quoi !

a++

PS : désolé, je viens d'ouvrir ma boite de mail car pendant toute la matinée je devais administrer et modérer mon forum, pas grand chose a faire car il est encore jeune mais bon ...

Si t'a besoin d'aide, MP !!!
Un forum...
Messages postés
5
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
4 mai 2008

Alors if(trim($pass) == trim($password)) ça ne marche pas ==> Je pense que ça vient de SQLSERVER(bdd obligatoire à cause du bts). Il met des espace tout seul !

Sinon pour $pass .= str_repeat(' ',32-strlen($pass)); Ca marche nikel :) Merci bcp

PS: J'ai commencé le php il y a deux mois donc je suis encore en initiation