CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] probleme de comparaisons de chaine

trymort
trymort
Niveau 9
21 juillet 2014 à 19:08:52

Bonjour, je souhaite que les membres puissent se connecter et donc je vais verifier dans la base de donnee si dans la table des membres le login existe et qu'il match avec le mot de passe entré.

Seulement il y a quelque chose d'étrange, tout semble bien se passer lorsque que c'est un membre que j'ai crée par phpmyadmin et je me loggue dessus.

Par contre quand c'est un membre inscrit par le biais du formulaire impossible de comparer correctement les valeurs...

Voici le code de la partie qui semble poser un soucis, les variables comparées sont celles recuperées par requête sql par rapport aux variables reçues par POST:

$request = 'SELECT login, password, avatar FROM membres WHERE login =\ .$_POST['login'].'\;
$reponse = $bdd->query($request);
if ($donnee = $reponse->fetch())
{

echo "ok " .$donnee['login']. '='. $_POST['login']. ' '. $donnee['password']. '='. $_POST['pass']. '<br>';

if (strcmp($donnee['login'], $_POST['login']) == 0)
{
echo " meme login: ". $donnee['login']. '='. $_POST['login'];
if (strcmp($donnee['password'], $_POST['pass']) == 0)
{
echo " meme pass: ". $donnee['password']. '='.$_POST['pass'];
//ouverture session
}
else
echo "pass different";
}
else
echo "login inexistant";

Lorsque je me connecte avec un compte crée par phpmyadmin ça donne:
"ok Gobols=Gobols pass: aaa=aaa
meme login: Gobols=Gobols meme pass: aaa=aaa"

mais lorsque c'est par le biais d'un membre fraichement inscrit par le formulaire ca donne :
"ok exemple =exemple aaaaaa=aaaaaa"

Dans les deux cas la requête SQL fonctionne et on affiche les variables comparées qui sont identiques, par contre "exemple" ne valide pas la comparaison de ses membres et la seule différence entre ces deux situation vient de la création de l’entrée...

Une idée de ce que ça peut être ? merci !

deepblue
deepblue
Niveau 16
21 juillet 2014 à 20:04:48

Remplace « strcmp($donnee['login'], $_POST['login']) » par « $donnee['login'] === $_POST['login'] »

trymort
trymort
Niveau 9
21 juillet 2014 à 21:04:24

Alors j'avais vu qu'on pouvait faire cela mais apres test j'ai toujours le meme soucis, l'affichage est strictement similaire malgres que les deux chaines sont identique de visu !

Ca peut venir de la config de la ddb ?

deepblue
deepblue
Niveau 16
21 juillet 2014 à 21:50:48

Tu as un espace "example " d'où la comparaison invalidée. Utilies "===" pour comparer tes string.

trymort
trymort
Niveau 9
21 juillet 2014 à 23:20:21

ho god ca venait du fait que j'inserais un espace dans la requete d'inscription SQL, en plus c'est le genre de truc qui m'arrive toujours en C.

Bah merci de vos reponse en tout cas meme si je ne comprend pas tres bien la difference entre == et ===. La difference vient d'ou dans la comparaison ?

deepblue
deepblue
Niveau 16
21 juillet 2014 à 23:37:31

"0" == 0 :d) true
"0" === 0 d) false
0 == false :d) true
0 === false :d) false

Il compare le type des données que tu compares, en plus des valeurs comparée (pas cast foireux)

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment