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


eloyasGithub
Réponse acceptée

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

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. ^^

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.

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

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

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.

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 ! :(

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";
                        }
        }

    }

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

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...

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