formulaire de connexion

Par scrubsboy, il y a 11 ans


bon,voila je suis dans la muise ! quand je rentre mon identifiant et mon mot de passe rien ne se passe en dirais que ca ne verifie pas dutout dans la base de donnees l'existance de ce mot de passe et de ce nom d'utilisateur s'il vous plait aidez moi !

     <?php
        $error=array();

          if(isset($_POST['submit']))
{

$nom_dutilisateur=htmlspecialchars(trim($_POST['nom_dutilisateur']));
$mot_de_passe=htmlspecialchars(trim($_POST['mot_de_passe']));

if (empty($nom_dutilisateur)){
    $error ['nom_dutilisateur'] = '*saisir votre identifiant';
}
 if(empty($mot_de_passe)){
     $error ['mot_de_passe'] = '*saisir un mot de passe';
     $mot_de_passe=md5($mot_de_passe);
 }else if (strlen($mot_de_passe)<3)
       $error['mot_de_passe'] ='*mot de passe trop petit';

      if (empty($error)){

                         $bdd = new PDO('mysql:host=localhost;dbname=projet_final;charset=utf8', 'root', '');
                         function user_exists($bdd, $nom_dutilisateur) {
                                 $nom_dutilisateur = filtres($nom_dutilisateur);

                           $con= $bdd->prepare("SELECT * FROM etudiant WHERE nom_dutilisateur='$nom_dutilisateur' AND mot_de_passe='$mot_de_passe'");
                             $con->execute(array( ':nom_dutilisateur'=>$nom_dutilisateur, ':mot_de_passe'=>$mot_de_passe ));    

                                        $count= $con->fetch(PDO::FETCH_ASSOC);

                                     if($count > 0){
                                        echo "good";
                                     }

     }

      }

}
                   ?>

12 réponses

scrubsboy, il y a 11 ans

oui c'est juste pour essayer car meme le good il s'affiche pas !!

mxmaxime, il y a 11 ans

Je n'ai jamais fait de requête comme cela, mais plutôt :

"SELECT * FROM etudiant WHERE nom_dutilisateur=:nom_dutilisateur AND mot_de_passe= :mot_de_passe"

Sinon, penses à débug ton code, soit via xdebug, ou vardump, vérifie que ta requête s'effectue bien, fait un fetchAll et vérifie ce que contient ta variable. ^^

eloyasGithub, il y a 11 ans

Salut salut, :)

htmlspecialchars ne sert qu'à l'affichage. C'est n'importe quoi, définir une fonction en plein millieu de ton code...

<?php $nom_dutilisateur = filtres($nom_dutilisateur);

C'est quoi ça :

<? php if (empty($error)){ $bdd = new PDO('mysql:host=localhost;dbname=projet_final;charset=utf8', 'root', ''); function user_exists($bdd, $nom_dutilisateur) { $nom_dutilisateur = filtres($nom_dutilisateur); $con= $bdd->prepare("SELECT * FROM etudiant WHERE nom_dutilisateur='$nom_dutilisateur' AND mot_de_passe='$mot_de_passe'"); $con->execute(array( ':nom_dutilisateur'=>$nom_dutilisateur, ':mot_de_passe'=>$mot_de_passe )); $count= $con->fetch(PDO::FETCH_ASSOC); if($count > 0){ echo "good"; } }

Pourrais tu faires un effort s'il te plait ? :)
Cordialement.

eloyasGithub, il y a 11 ans

Personne n'a remarquer qu'il définissait une fonction comme ça ? :-°

mxmaxime, il y a 11 ans

Puis oui, comme l'a dit @eloyasGithub ton organisation n'est vraiment pas terrible :/

eloyasGithub, il y a 11 ans

Avant de mélanger fonction et "code brut", fais déjà un code qui marche en "brut" ensuite tu feras des fonction/méthodes/class... bref, tout ton code à est revoir voici une liste de ce qui ne va pas (non exhaustive) :

  • htmlspecialchars à l'affichage uniquement
  • Si tu défini une fonction, défini la dans un fichier à part
  • Si tu défini un fonction dans un fichier a part, n'oublier pas d'apeller la dites fonctions
  • ...
  • ...

Cordialement.

scrubsboy, il y a 11 ans

pour l'organistion je sais c'est un n'importe quoi ! le probleme c'est la fonction user_exists dont je ne suis absolument pas sur je veux que ca verifie s'il y a une ligne dans ma table etudiant qui a cet identifiant et ce mot de passe mais rien ne se passe ! :(

MehdiWEB, il y a 11 ans

Voila ton code:

<?php if(isset($_POST['submit'])) { $pseudo = htmlentities(trim($_POST['nom_dutilisateur'])); $password = htmlentities(trim($_POST['mot_de_passe'])); $errors = []; $error_check = false; if(empty($pseudo)) { $error_check = true; $errors['pseudo_empty'] = "*saisir votre identifiant"; } if(empty($password)) { $error_check = true; $errors['password_empty'] = "*saisir votre mot de passe"; } else if(strlen($password) < 3) { $error_check = true; $errors['password_lenght'] = "* mot de passe trop petit"; } if($error_check == false) { $bdd = new PDO('mysql:host=localhost;dbname=projet_final;charset=utf8', 'root', ''); $con = $bdd->prepare("SELECT * FROM etudiant WHERE nom_dutilisateur = ? AND mot_de_passe = ?"); $con->execute(array($pseudo,$password)); $row = $con->rowCount(); if($row > 0) { echo "good"; } else { $errors['info'] = "no good"; } } }
MehdiWEB, il y a 11 ans

@eloyasGithug on est tous passer par la, sa fait pas de mal d'aider des personnes

eloyasGithub, il y a 11 ans

Ouais tout à fais d'accord avec toi, cependant je ne pense pas que ça aide de lui balancer un code "fonctionnel" (non tester) donc bon tu l'aiguille et tu le laisse ce débrouiller avec des info's c'est le meilleur moyen d'apprendre après ce n'est que mon avis. ;)

PS : Enlève ce maudit htmlspecialchars stp...

MehdiWEB, il y a 11 ans

Oui tu a pas tord non plus, j'ai juste refait son code c'est pour sa je l'ai laissé ahah