IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Script identification utilisateur/mot de passe


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Il semblerait que la condition else ne soit jamais pris en compte dans la boucle while.

  3. #3
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    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...
    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 éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    J'ai décommenté le execute() mais cela ne change rien, et je rentre bien dans le while.

  5. #5
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    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.
    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 éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Si j'écris cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    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.
    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 éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Je ne vois pas comment faire avec PDO pour adapter la syntaxe!

  9. #9
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Voici un code qui fonctionne à la perfection
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/05/2007, 10h56
  2. [LDAP] Authentification LDAP via nom d'utilisateur/mot de passe en PHP
    Par hismaella dans le forum Bibliothèques et frameworks
    Réponses: 14
    Dernier message: 21/03/2007, 15h28
  3. Identification par mot de passe
    Par Sheva7 dans le forum Sécurité
    Réponses: 3
    Dernier message: 12/06/2006, 10h16
  4. erreur 1045: Accès refusé pour l'utilisateur mot de passe : OUI
    Par antrax2013 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 31/05/2006, 17h03
  5. probleme identification et mot de passe root
    Par freums dans le forum Débuter
    Réponses: 5
    Dernier message: 19/09/2003, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo