script d'authentification d'utilisateur

Petit nouveau ! | 3 Messages

10 déc. 2013, 17:14

Salut, mon code est le suivant:
 <?php
                                session_start();
                                
    // on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    if ((!empty($_POST['index']['login'])) && !empty($_POST['index']['pass'])) {
 
$dba = new PDO('mysql:host=localhost;dbname=concour','root','melodie');

    // on teste si une entrée de la base contient ce couple login / pass
$sql = $dba->prepare( 'SELECT COUNT(*) FROM users WHERE login=:login AND password=:pass' );
    $sql->bindValue( ':login', addslashes($_POST['index']['login']),
            PDO::PARAM_STR);
    $sql->bindValue(':pass', addslashes(md5($_POST['index']['pass'])),
            PDO::PARAM_STR);
                     
    $sql->execute() or die('Erreur SQL !<br />'.$sql.'<br />'.$sql->errorInfo());
 
    while($data = $sql->fetch(PDO::FETCH_BOTH)){
//     var_dump ($data);
//        die();
$sql->closeCursor();
    // si on obtient une réponse, alors l'utilisateur est un membre
        if ($data[0] == 1)
             
        {
            
    // On enregistre ses données dans la session
    $sql = $dba->prepare( 'SELECT nom, prenom, grade FROM users WHERE login=:login' );
    $sql->bindValue( 'login', $_POST['index']['login'],
            PDO::PARAM_STR);
    
     $sql->execute() or die('Erreur SQL !<br />'.$sql.'<br />'.$sql->errorInfo());
     
    while($data = $sql->fetch(PDO::FETCH_BOTH)){
     
            $_SESSION['login'] = $data['login'];
            $_SESSION['nom'] = $data['nom'];
            $_SESSION['prenom'] = $data['prenom'];
            $_SESSION['grade'] = $personne['grade'];
            $_SESSION['email'] = $personne['email'];
  
            ////////////////////////////////      ///////////////////////////////
 /////////////////////////////////////////// ICI ////////////////////////////////////////////// 
            ////////////////////////////////      ///////////////////////////////
             
            if($_SESSION['grade'] == administrateur){          
                header('Location: membre_admin.php');
                    exit();
                }
            elseif($_SESSION['grade'] == superviseur){
                header('Location: membre_superv.php');
                    exit();
                }
            elseif($_SESSION['grade'] == utilisateur){
                header('Location: membre_users.php');
                    exit();
                }
    }
        }
    // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
        elseif ($data[0] == 0) {
            $erreur = 'Vous avez peut-être fait une erreur dans la saisie des identifiants.<br> Si non votre compte est inexistant';
        }
    // sinon, alors la, il y a un gros problème 
        else {
            $erreur = 'Probème de configuration : plusieurs membres ont les mêmes identifiants de connexion.';
        }
    }
    }
    else {
        $erreur = 'Veuillez remplir tous les champs.';
    }
}
 
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
    <title>Accueil</title>
    </head>
 
    <body>
        Veuillez vous identifiez :<br />
        <form action="index.php" method="post">
            Login : <input type="text" name="index[login]" placeholder="Login" required ><br />
            Mot de passe : <input type="password" name="index[pass]" placeholder="Password" required ><br />
            <input type="submit" name="connexion" value="Connexion">
        </form>
 </body>
</html>
        <?php
            if (!empty($erreur)){
                echo '<br /><br />',$erreur;
            }
        ?>
 
    
Quand j'appuie sur le bouton connexion j'ai l'erreur prévu en cas d'absence de ce compte dans la bdd:
$erreur = 'Vous avez peut-être fait une erreur dans la saisie des identifiants.<br> Si non votre compte est inexistant';
, hors il s'avère que ces comptes y sont.

Merci bien!

Eléphanteau du PHP | 12 Messages

10 déc. 2013, 17:20

Pour tes deux premiers IF, cela reviend exactement au même. Je penses qu'un simple if($_POST) suffit :)

Petit nouveau ! | 3 Messages

10 déc. 2013, 17:47

C'est fait mais le résultat est toujours le même :|

Eléphanteau du PHP | 12 Messages

10 déc. 2013, 20:12

un var_dump($data) ou print_r($data) te renvoie quoi ?

Petit nouveau ! | 3 Messages

11 déc. 2013, 09:42

salut!
Quand je fais un var_dump de $data, j'ai ce résultat array(2) { ["COUNT(*)"]=> string(1) "0" [0]=> string(1) "0" }