Authentification (encore une fois!)

Résolu
geekette69 Messages postés 4 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 15 avril 2008 - 15 avril 2008 à 13:43
geekette69 Messages postés 4 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 15 avril 2008 - 15 avril 2008 à 16:05
Bonjour à tous et désolée par avance de créer une énième discussion concernant l'authentification ...

J'ai lu et me suis inspirée de différentes sources de ce site et mon authentification marche 'presque'.

Voici le code du formulaire de saisie des identifiants :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='fr'>
    <head>    <link rel 'stylesheet' media 'screen' type = 'text/css' href ='design_formulaire.css' />
        <title>Formulaire d'authentification</title>
    </head>
   
        <form action='connexion.php' method='post'>
            <fieldset>
                <legend>Identifiez-vous</legend>
                <?php
                    // Rencontre-t-on une erreur ?
                    if(!empty($message)) {
                  
                        print htmlspecialchars($message);
                    }
                ?>
               
                    <label for='login'>Login :</label>
                   
               

               
                    <label for='mdp'>Mot de Passe :</label>
                   
                   
               

            </fieldset>
        </form>
   
</html>

et celui du traitement de BDD :

<?php

$sql_connect = mysql_connect('localhost', 'root', '') or die ('Impossible de se connecter à MySQL');

$db = 'auth_sauvegardes';

mysql_select_db($db, $sql_connect) or die ('Connexion ratée'.mysql_error());
    $sql mysql_query ("SELECT login, mdp FROM authentification WHERE login '$login' AND mdp = '$mdp'");

    $resultat = mysql_fetch_array($sql);
       

    if(isset($_POST['login']) and isset ($_POST['mdp'])) {    // Si on a renseigné un login et un mdp
        if($resultat['login'] !== $login) { // Si le login ou le mdp sont différents de ceux de la bdd, un message d'erreur apparaît
        $message = 'Login incorrect';
 
            }
            elseif ($resultat['mdp'] !== $mdp) {
            $message = 'Mot de passe incorrect';
            }
            else {    //Sinon on démarre la session avec le login correct et la voulue s'ouvre
                session_start();
                $_SESSION['login'] = $_POST['login'];
           
                exit();
            }
    }
                else {
                    $message = 'Veuillez vous identifier';
                    }
   

?>

Une fois que j'ai saisi login et mdp, je suis redirigée sur une page blanche. La seule info que j'ai grâce à un print sur la requête c'est 'Resource ID #3'

Ma BDD se compose comme ça :  matricule (id non auto mais unique), nom, prenom, login, mdp

Si vous pouvez m'éclairer ce serait génial!
Merci d'avance

Geekette[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]

6 réponses

nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
15 avril 2008 à 14:49
Salut Geekette !!!

Moi aussi je suis débutant en php, mais je vois plusieurs trucs déconnants dans ton code :

- dans ton code html -> mets tes attributs entre doubles quotes.
- tu ne fais pas de requête sur ton submit : if (isset($_POST['submit'])) {} avant de lancer tes vérifications sur tes champs ; pour moi c'est étrange !
- $login et $mdp ne sont pas renseignés : je pense que tu voulais mettre -> $_POST['login'], ...
- et autre truc que je vois : != = -> je ne sais pas si c'est correct ! pour moi c'est plutôt : !=

Maintenant, je te file le code que j'ai pour les authentifications !!! (ne me traitez pas si je donne ma source, c'est pour aider notre amie !!!)

// Si le formulaire est envoyé

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

    // Appel de la table et vérification du Mebmre par le login et le pass
    if ($sql_01 mysql_query('SELECT * FROM Membres WHERE Login <> "'.$_POST['login'].'" AND Pass "'.$_POST['pass'].'"')
    OR die(mysql_error())) {
       
        // Enregistrement du nombre de résultat de la requête SQL

        if ($row_01=mysql_fetch_array($sql_01)) {
            echo ' Erreur : log in incorrect';
        }           

    }

    // Appel de la table et vérification du Membre par le login et le pass
    if ($sql mysql_query('SELECT * FROM Membres WHERE Login "'.$_POST['login'].'" AND Pass <> "'.$_POST['pass'].'"')
    OR die(mysql_error())) {
       
        // Enregistrement du nombre de résultat de la requête SQL

        if ($row=mysql_fetch_array($sql)) {
            echo ' Erreur : mot de passe incorrect';
        }

    }
       
    // Appel de la table et vérification du Mebmre par le login et le pass
    if ($sql02 mysql_query('SELECT * FROM Membres WHERE Login "'.$_POST['login'].'" AND Pass = "'.$_POST['pass'].'"')
    OR die(mysql_error())) {
       
        $res=mysql_num_rows($sql02);
   
            // Si le résultat de la liste (num-rows) est > ou = à 1

            if ($res == 1) {

                // Afficher dans un tableau

                $row02=mysql_fetch_array($sql02);
       
                if ($row02['ID']==1) {
                    $type_01='Admin';
                    $_SESSION['Log_admin']=$_POST['login'];
                    $_SESSION['Log_session_admin']=$type_01;
                        return '[index.php?log_out_admin D&eacute;connexion]
';
                }
               
                // Si l'enregistrement est 2, $type prend abonné ***

                if ($row02['ID']>=2) {

                    $type_02='Abonne';

                    $_SESSION['Log_membres']=$_POST['login'];
                    $_SESSION['Log_session_membres']=$type_02;
                    return '[index.php?log_out_membres D&eacute;connexion]
';
                }

            }
       
            else {

            echo '[index.php?page=inscription Inscrivez-vous]

';

            }
       
    }
   
}

}

J'espère que mon intervention pourra t'aider !!! Bonne continuation dans ton apprentissage de php !!!
3
geekette69 Messages postés 4 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 15 avril 2008
15 avril 2008 à 15:28
Merci pour ta réponse Nanti !

J'ai corrigé les erreurs que tu as pu constater mais il me redirige toujours vers une page blanche avec marqué 'resource id #3'...

Je te remercie pour ta source mais j'aimerais vraiment y parvenir avec ce que j'ai déjà pû faire d'autant que je suis sûre que c'est une 'merdouille' qui me bloque mais tellement 'merdouilleuse' que je la trouve pas...

Question bête sur ta source : pourquoi tu reprends autant de fois la même requête? (simple curiosité)

Geekette
0
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
15 avril 2008 à 15:47
Si tu regardes bien, je ne reprends pas exactement la même requête puisque je vérifie d'abord si le login est <> (différent) et pareil pour le mot de passe !!! Ensuite, si l'ensemble est égal, c'est là que je teste le reste pour savoir si le formulaire doit trouver une session d'administration, de membre ou le visiteur n'est pas dans ma bdd.

Sinon, j'ai également une question... Ta connexion à ta bdd et tes vérifications de formulaire sont dans une fonction ??? sinon, par quoi les appelles-tu exactement ????
0
geekette69 Messages postés 4 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 15 avril 2008
15 avril 2008 à 15:53
Non ce n'est pas dans une fonction en fait j'ai déjà les identifiants dans ma base. Quand l'utilisateur veut utiliser l'appli, il tombe sur une fenêtre lui demandant ses identifiants, il les saisit et après le click sur le bouton 'connexion', le script de vérification avec la requête se lance. Je ne sais pas si j'ai bien répondu à ta question ...

Geekette
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
15 avril 2008 à 15:59
OK ! Je pense avoir compris quelle est la façon dont tu procèdes !!!

À présent, si tu veux que je t'aide de façon un peu plus privée, on peut se contacter par mp !???

Je suis dispo jusque 18h aujourd'hui et demain aux horraires de bureau !!!

Cordialement,

Nanti
0
geekette69 Messages postés 4 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 15 avril 2008
15 avril 2008 à 16:05
Let's go!

Geekette
0
Rejoignez-nous