Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Membre régulier Avatar de transact
    Homme Profil pro
    Inscrit en
    décembre 2008
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : décembre 2008
    Messages : 317
    Points : 77
    Points
    77

    Par défaut Script identification utilisateur/mot de passe

    Bonjour à toutes et à tous,

    Pouvez-vous me dire ce qui cloche dans mon code car si je mets le else dans la boucle while l'identification ne s'effectue pas.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <pre>
    <?php 
    	session_start();
    	require_once("includes/inc_connexion.php"); // on se connecte à la Base de données	
    	$conn=opendb_conn();
     
    	if(isset($_POST['submit'])) {
    		// bouton submit pressé, je traite le formulaire
    		$login = (isset($_POST['pseudo']))?$_POST['pseudo']:'';
    		$password = (isset($_POST['pass']))?$_POST['pass']:'';
    		extract($_POST); // importation des variables dans la table des symboles
    		// constitution de la requete
    		$req="select login, password from membres";	
    		// on prépare la requete a executer sur le serveur
    		$stm=$conn->query($req);
    		// on exécute la requete
    		//$stm->execute();	
    		// parcourir l'ensemble des tuples de la table des membres
    		while($result=$stm->fetch(PDO::FETCH_ASSOC)) {
    			// tester si le login et le password sont en correspondance
    			if(($result['login']==$login) && ($result['password']==$password)) {
    				// on debute alors la session
    				//session_start();
    				// on assigne les variables de session
    				$_SESSION['pseudo'] = $_POST['pseudo'];
    				$_SESSION['pass'] = $_POST['pass'];
    				// on affiche le message de connexion
    				echo '<p style="color:green">authentifi&eacute;'.' ['.$_SESSION['pseudo'].']'.'</p>';			 
    			} //if			
    			else {
    				//echo "ko";
    				header('Location: http://localhost/index.php');
    			}			
    		} //while											
    	} //if
    	$stm->closeCursor();
    ?>
    </pre>
    Merci d'avance.
    Transact

  2. #2
    Membre régulier Avatar de transact
    Homme Profil pro
    Inscrit en
    décembre 2008
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : décembre 2008
    Messages : 317
    Points : 77
    Points
    77

    Par défaut

    Il semblerait que la condition else ne soit jamais pris en compte dans la boucle while.

  3. #3
    Rédacteur/Modérateur

    Avatar de FirePrawn
    Homme Profil pro Sébastien Germez
    Ingénieur réalisateur
    Inscrit en
    mars 2011
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Nom : Homme Sébastien Germez
    Âge : 26
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur réalisateur
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2011
    Messages : 3 100
    Points : 21 904
    Points
    21 904

    Par défaut

    Bonjour,

    Peut-être parce que tu ne rentres pas dans ton while ?
    L'exécution de ta requête est commentée, donc à mon avis le while ne renvoie jamais true...
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez-moi !
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  4. #4
    Membre régulier Avatar de transact
    Homme Profil pro
    Inscrit en
    décembre 2008
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : décembre 2008
    Messages : 317
    Points : 77
    Points
    77

    Par défaut

    J'ai décommenté le execute() mais cela ne change rien, et je rentre bien dans le while.

  5. #5
    Rédacteur/Modérateur

    Avatar de FirePrawn
    Homme Profil pro Sébastien Germez
    Ingénieur réalisateur
    Inscrit en
    mars 2011
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Nom : Homme Sébastien Germez
    Âge : 26
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur réalisateur
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2011
    Messages : 3 100
    Points : 21 904
    Points
    21 904

    Par défaut

    Alors ça vient peut être de ta requête.

    Ta requête renvoie TOUS les utilisateurs avec leur mot de passe.
    Il ne serait pas plus simple de faire un Select login, pass from membres where login = $login plutôt ?
    Comme ça s'il y a un résultat c'est bon, sinon c'est pas bon.
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez-moi !
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  6. #6
    Membre régulier Avatar de transact
    Homme Profil pro
    Inscrit en
    décembre 2008
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : décembre 2008
    Messages : 317
    Points : 77
    Points
    77

    Par défaut

    Si j'écris cela :
    Code :
    $req="select login, password from membres where login =".$login;
    J'ai le message d'erreur suivant :
    Fatal error: Call to a member function fetch() on a non-object in C:\Users\sogia\Desktop\www\wineBusiness\connexion.php on line 19

  7. #7
    Rédacteur/Modérateur

    Avatar de FirePrawn
    Homme Profil pro Sébastien Germez
    Ingénieur réalisateur
    Inscrit en
    mars 2011
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Nom : Homme Sébastien Germez
    Âge : 26
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur réalisateur
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2011
    Messages : 3 100
    Points : 21 904
    Points
    21 904

    Par défaut

    Il faut adapter la syntaxe...

    J'ai donné cette requête pour te faire comprendre l'idée. Tu utilises PDO, sers t'en.
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez-moi !
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  8. #8
    Membre régulier Avatar de transact
    Homme Profil pro
    Inscrit en
    décembre 2008
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : décembre 2008
    Messages : 317
    Points : 77
    Points
    77

    Par défaut

    Je ne vois pas comment faire avec PDO pour adapter la syntaxe!

  9. #9
    Membre régulier Avatar de transact
    Homme Profil pro
    Inscrit en
    décembre 2008
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : décembre 2008
    Messages : 317
    Points : 77
    Points
    77

    Par défaut

    Voici un code qui fonctionne à la perfection
    Code php :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    /** script d'identification du couple login/password présent dans la table des membres */
    require_once("includes/inc_connexion.php");
    $conn = opendb_conn(); // on se connecte Ã* la Base de données
     
    if (isset($_POST['submit'])) {
        // bouton submit presse, je traite le formulaire
        $pseudo = (isset($_POST['pseudo'])) ? $_POST['pseudo'] : '';
        $pseudo = htmlentities(trim($pseudo));
        $password = (isset($_POST['password'])) ? $_POST['password'] : '';
        $password = sha1($password);
        /* constitution de la requete avec la clause where RECUPERANT LES PARAMETRES login ET password
          Cette requete a pour avantage de cibler exactement le couple login/password
          ceci evite de faire plus bas un test if() ... else
          Dans la liste de sélection nous récupérons les champs id et actif de la table producteurs
         */
        $req = "select membre_id,pseudo, password,actif from membres where pseudo='" . $pseudo . "' and password='" . $password . "'";
        // on prépare la requete a executer sur le serveur
        $stm = $conn->prepare($req);
        // on exécute la requete
        $stm->execute();
        // PDO::FETCH_ASSOC: retourne un tableau indexé par le nom de la colonne comme retourné dans le jeu de résultats
        $result = $stm->fetch(PDO::FETCH_ASSOC);
        /* // pour les tests
          print '<pre>';
          print_r($result);
          print '</pre>';
         */
        $actif = $result['actif']; //récupération de la valeur du champ 'actif'
        $id = $result['membre_id']; //récupération de la valeur de l'id producteur en base
        $pseudo_db = $result['pseudo'];
        $password_db = $result['password'];
        // si le compte a été activé via le lien du mail d'activation et que le couple pseudo/password correspond
        if (($actif == '1') && ($pseudo == $pseudo_db) && ($password == $password_db)) {
            // on assigne les variables de session ... mais on n'ouvre pas de session pour l'instant
            $_SESSION['pseudo'] = $pseudo;
            $_SESSION['id'] = $id; // cette variable sera utilisée dans ajout_publierAnnonce.php
            $stm->closeCursor(); // fermeture du curseur
        } else {
            // cependant si le compte est inactif ou que le couple login/password ne correspond pas
            echo "Votre login ou votre mot de passe est incorrect !";
            //header('Location: http://localhost/clothesBusiness/index.php'); // on reste sur la page index.php
        } // fin if(($actif == '1') && ($pseudo == $pseudo_db) && ($password == $password_db))
    } //fin if(isset($_POST['submit']))
    $conn = null;

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •