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

PHP & Base de données Discussion :

Controler l'accès avec pseudonyme et mot de passe


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de -Fly-
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 178
    Points : 94
    Points
    94
    Par défaut Controler l'accès avec pseudonyme et mot de passe
    Bonjour

    Voila ma table MYSQL

    utilisateur
    id,pseudo,localisation,mdp,date


    Maintenant je fais ma page connexion et je veux tester si le pseudo existe et si le mdp correspond a celui entré pour le pseudo.

    Quel condition dois je mettre ?

    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
    <?php
    
    if (?????????)
    {
    $_SESSION['pseudo']=$_POST[pseudo]; 
    $_SESSION['email']=$_POST[email]; 
    $_SESSION['localisation']=$_POST[localisation]; 
    $_SESSION['mdp']=$_POST[mdp]; 
    
    echo "Vous avez été connecté";
    }
    else
    {
    echo "impossible de se connecter";
    include('./inc/connexion3.php');
    
    }
    ?>
    Merci de votre aide
    Bonne journnée

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 099
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 099
    Points : 8 208
    Points
    8 208
    Billets dans le blog
    17
    Par défaut
    Exécute cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = 'SELECT ALL id, pseudo, localisation, date '
         . 'FROM utilisateurs '
         . "WHERE pseudo = '{$_POST['pseudo']}' AND mdp = '{$_POST['mdp']}'" ;
    ... et vérifie si tu as 1 enregistrement en retour. Si oui tu peux enregistrer les données récupérées en session.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut
    Hello,

    Tu peux adapter ceci (je n'ai pas testé mais ça devrait coller plus ou moins) :

    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
     
    //si $_POST vide alors c'est qu'on a rien rempli...
    if(!empty($_POST))
    {
            extract($_POST); // extraction des variables
            include("ConnexionBDD.php"); // pour se connecter à la base de données
            $req = $bdd->prepare('SELECT * FROM beta_membres WHERE email= ? AND pass = ?'); // preparation de la requête
                    $req->execute(array($Email,md5($pass))); // execution de la requete
    //si le rowCount renvoi 0 alors c'est qu'il n'y a pas d'entrée correspondante dans ta table... connexion refusée
            if($req->rowCount()==0)
            {
            echo "impossible de se connecter";
            include('./inc/connexion3.php');
     
            }
    //sinon, on se connecte et on attribue les variables de sessions
            else
            {
     
            $_SESSION['pseudo']=$_POST[pseudo]; 
            $_SESSION['email']=$_POST[email]; 
            $_SESSION['localisation']=$_POST[localisation]; 
            $_SESSION['mdp']=$_POST[mdp]; 
            echo "Vous avez été connecté";
     
            }
     
    }

  4. #4
    Membre régulier Avatar de -Fly-
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 178
    Points : 94
    Points
    94
    Par défaut
    Salut souris84 je n'ai pas compris ce qu'il faut mettre dans pseudo= ? et pass = ? ,

    peu tu m'éclairer?

    Bonne soirée

  5. #5
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Rien

    C'est une requête préparée dont les ? sont remplacés dynamiquement (bind) par la méthode execute et son tableau en argument. Pour plus de lisibilité, Souri84 aurait pu écrire ceci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $req = $bdd->prepare('SELECT * FROM beta_membres WHERE email= :email AND pass = :pass');
    $req->bindParam(':email', $email);
    $req->bindParam(':pass', $pass);
    $req->execute();

  6. #6
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut
    c'est vrai, cette méthode est plus lisible... excusez moi ;-) mais j'ai l'habitude de faire avec les ? ce qui est un peu moins fastidieux à mon goût...

    edit :

    On peut même faire encore plus simple non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = $bdd->prepare('SELECT * FROM beta_membres WHERE email= :email AND pass = :pass');
    $req->execute(array
    ':email'=>$email,
    ':pass'=>$pass
    ));

  7. #7
    Membre régulier Avatar de -Fly-
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 178
    Points : 94
    Points
    94
    Par défaut
    J'ai essayé ceci

    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
    <?php
    
    $con = mysql_connect("localhost","root","root");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    
    mysql_select_db("ap", $con);
    
    if(!empty($_POST))
    {
            extract($_POST); // extraction des variables
            
            $req = $bdd->prepare('SELECT * FROM utilisateur WHERE pseudo= ? AND mdp = ?'); 
                    $req->execute(array($pseudo,md5($mdp))); 
    				
            if($req->rowCount()==0)
            {
            echo "impossible de se connecter";
            include('./connexion.php');
     
            }
    
            else
            {
     
            $_SESSION['pseudo']=$_POST[pseudo]; 
            $_SESSION['email']=$_POST[email]; 
            $_SESSION['localisation']=$_POST[localisation]; 
            $_SESSION['mdp']=$_POST[mdp]; 
       
            }
     
    }
     
    ?>
    Mais toujours pas de résultat

    Mon but est de s'identifier avec pseudo et mdp qui ont été rentré dans la table utilisateur de ma base de donnée ap

    Merci de votre aide

  8. #8
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut
    Tu ne peux pas faire un mix entre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $con = mysql_connect("localhost","root","root");
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $req = $bdd->prepare('SELECT * FROM utilisateur WHERE pseudo= ? AND mdp = ?'); 
                    $req->execute(array($pseudo,md5($mdp)));

    soit tu te connectes par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //on se connecte à la base
    try
    {
    	$bdd = new PDO('mysql:host=XXX;dbname=XXX', 'login', 'mdp');
    	//$bdd = new PDO($Connexion);
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
    et tu utilises

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $req = $bdd->prepare('SELECT * FROM utilisateur WHERE pseudo= ? AND mdp = ?'); 
                    $req->execute(array($pseudo,md5($mdp)));
    soit tu te connectes par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $con = mysql_connect("localhost","root","root");
    et ensuite il faut revoir le code de vérification pour savoir si on est connecté... malheureusement, je ne pourrais pas t'en dire plus sur cette seconde méthode.. je ne l'ai que succinctement apprise et j'utilise PDO que je trouve plus sympa, plus puissant et plus moderne...

    et ici pour voir la documentation pour se connecter à une base

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/06/2012, 23h45
  2. Réponses: 2
    Dernier message: 20/10/2009, 16h50
  3. Controle d'acces avec carte a puce
    Par pierrot10 dans le forum Sécurité
    Réponses: 0
    Dernier message: 23/03/2008, 13h55
  4. [PostgresSQL]Pb accés des utilisateurs sans mot de passe
    Par woodwai dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 22/05/2003, 16h06

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