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 :

Verification des identifiants d'un utilisateur [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Verification des identifiants d'un utilisateur
    Bonjour à tous, je suis nouveau dans ce forum
    Depuis quelques jours j'essaie de faire une requette sql qui permet tout d'abord de verifier si les identifiants de l'utilisateur sont correctes (chose qui je n'arrive pas deja à faire). Et si c'est le cas, on vérifie le statut de l'utilisateur (Super Admin, Admin ou visiteur) dans la bdd.
    S'il est Admin ou visiteur il est dirigé dans une page pdr.php mais s'il est Super Admin, il est dirigé dans une page navigation.pdr.
    Je ne suis qu'un debutant qui demande de l'aide:
    Voici mon code:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
    $errormessage ="";
    $count=0;
    $var="";
     
     
    	//Définition des variables de connexion à la base de données
    	$bd_nom_serveur='localhost';
    	$bd_login='root';
    	$bd_mot_de_passe='';
    	$bd_nom_bd='espace_membre';
     
    	//Connexion à la base de données
    	mysql_connect($bd_nom_serveur, $bd_login, $bd_mot_de_passe);
    	mysql_select_db($bd_nom_bd);
    	mysql_query("set names 'utf8'");?>
    <?php
     
    if(isset($_POST['Ok']))
    {
    	if(empty($_POST['pseudo']) OR empty($_POST['pass']))
    	{
    		$errormessage = "veuillez remplir tous les champs";
    	}
    	if(!empty($_POST['pseudo']) AND !empty($_POST['pass']))
    	{
     
            // On fait une requette qui permet de compter le nombre de ligne si le pseudo et le mot de passe sont correctes
     
    		$reponse = 'SELECT COUNT(*) AS Motpass FROM admin WHERE Pseudo = '.$_POST['pseudo'].' AND Mot_pass = '.$_POST['pass'].'';
    		$resultat = $mysql ->query($reponse);
     
             //  Si le resultat est = 1
     
    			if($reponse['Motpass'] == 1)
    				{
                // Si le statut est Admin
     
    					if($resultat['Statut'] == "Admin")
    					{
    						session_start();
     
                                            $_SESSION['Statut'] = "Admin"
                                            $_SESSION['pseudo'] = $_POST['pseudo]
    						include("pdr.php");	 
    					}		
    				
    				}
    			else
    			{
    				$errormessage = "vous n'etes pas identifiés";
    		
    			}
    	}
    }?>

    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 136
    Points
    136
    Par défaut
    Bonjour,

    Tout d'abord je vois quelques petites choses a améliorer sur ton code.

    En premier je te conseille de créer un script PHP independant qui gere l'acces a ta base de données.
    Comme ca, si tu le faire evoluer, tu n'es pas obligé de retoucher a toutes tes pages.

    Ensuite cette partie de ton code peut etre simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(isset($_POST['Ok']))
    {
    if(empty($_POST['pseudo']) OR empty($_POST['pass']))
     
    if(!empty($_POST['pseudo']) AND !empty($_POST['pass']))
    {
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if(!empty($_POST['pseudo']) AND !empty($_POST['pass']))
    {
    Instructions
    }else
    {
    $errormessage = "veuillez remplir tous les champs";
    }
    Pour finir cette partie peut etre améliorée egalement : // On fait une requette qui permet de compter le nombre de ligne si le pseudo et le mot de passe sont correctes

    Je te conseille de faire d'abord un SELECT en prenant en compte le Username et le Password avec une clause LIMIT 1
    Ensuite tu comptes combien il y en a. Et pour finir tu fais ta condition sur ce resultat.

    Par ex : if $count == 0 {
    $message = aucun utilisateur trouvé
    }

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Ok double m
    J'ai modifie ma requette en mettant 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
    if(!empty($_POST['pseudo']) AND !empty($_POST['pass']))
    	{
    		$count = 'SELECT COUNT(*) AS Motpass FROM admin WHERE Pseudo = '.$_POST['pseudo'].' AND Mot_pass = '.$_POST['pass'].' LIMIT 1';
     
    			if($count == 1)
    				{
    					echo "vous etes enregistres";	
     
     
    		}
    else
    			{
    				$errormessage = "vous n'etes pas identifiés";
     
    			}
    Mais ca marche toujours pas. A chaque fois qe j'entre un mot de passe et un pseudo qu'il soit bon ou mauvais ca me met le message "vous n'etes pas identifiés".
    Je sais âs si c'est ma requette qui est mauvaise...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut que tu commences par apprendre les bases de PHP concernant les bases de données.

    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
    <?php
    	//Définition des variables de connexion à la base de données
    	$bd_nom_serveur='localhost';
    	$bd_login='root';
    	$bd_mot_de_passe='';
    	$bd_nom_bd='espace_membre';
     
    	//Connexion à la base de données
    	$bdd =  new PDO('mysql:host=' . $bd_nom_serveur . ';dbname=' . $bd_nom_bd, $bd_login, $bd_pass);
     
    	if(empty($_POST['pseudo']) OR empty($_POST['pass']))
    	{
    		$errormessage = "veuillez remplir tous les champs";
    	}
            else {
            // On fait une requette qui permet de compter le nombre de ligne si le pseudo et le mot de passe sont correctes
     
    		$sth = $bdd->prepare('SELECT Statut, Pseudo FROM admin WHERE Pseudo = :pseudo AND Mot_pass = :pass');
    		$sth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['pass']));
                    $row = $sth->fetch(PDO::FETCH_ASSOC);
    		if($row['Statut'] == "Admin")
    					{
    					session_start();
                                            $_SESSION['Statut'] = "Admin"
                                            $_SESSION['pseudo'] = $row['Pseudo'];
    					include("pdr.php");	 
    					}		
    		else
    			{
    				$errormessage = "vous n'etes pas admin";
     
    			}
    	}
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup sabotage,
    le code marche très bien et ca m'a permis d'apprendre quelques nouvelles fonctions PDO . Je ne sais vraiment pas comment te remercier.
    Par contre je pense qu'il ya un pb au niveau du
    include ("pdr.php")
    car la page pdr.php s’insère à l’intérieure de la page du formulaire. Ce qui donne deux pages dans une seule
    Je sais pas s'il ya un code particulier pour eviter cela...
    Cordialement
    ZOLEKO

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 136
    Points
    136
    Par défaut
    Effectivement je n'avais pas vu au premier coup d’œil mais sache que l'extension "mysql" est obsolète.

    Donc ensuite soit tu utilise l'extension PDO comme le précise Sabotage ou alors tu utilises l'extension "mysqli".
    Qui plus est, evites les majuscules dans les champs de ta bdd c'est sources d'erreurs a venir dans tes scripts

    Ensuite ce que je te conseille de faire est de procéder par étapes :
    1. Tu lances une requete SELECT soit avec PDO (voir ex Sabotage) ou alors avec Mysqli.
    Par ex : SELECT * FROM admin where pseudo=$_POST[pseudo], Mot_pass=$_POST[mot_pass] LIMIT 1 ,
    2. Tu compte combien d'entrées tu trouves avec cette requete via par ex un "mysqli_nums_rows"
    3. tu fais ta condition qui dit si $count == 0 dans ce cas affiche "vous n'etes pas admin"

    N'hesites pas si tu as d'autres questions.

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Par ex : SELECT * FROM admin where pseudo=$_POST[pseudo], Mot_pass=$_POST[mot_pass] LIMIT 1 ,
    On ne met jamais des valeurs POST directement dans une requête.

    car la page pdr.php s’insère à l’intérieure de la page du formulaire. Ce qui donne deux pages dans une seule
    C'est une redirection que tu veux alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Location: pdr.php");
    exit();
    evidemment pdr.php doit contenir une vérification de la session
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Ok double m et sabotage merci pour tout...
    Mon code marche tres bien.
    cortdialement
    ZOLEKO

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

Discussions similaires

  1. verrouillage des données / base Multi utilisateurs
    Par DI DODO dans le forum Access
    Réponses: 1
    Dernier message: 27/03/2006, 15h34
  2. Verification des checkboxs
    Par gregal dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 09/03/2006, 07h55
  3. Exécuter des script sous un utilisateur défini...
    Par nguthans dans le forum Apache
    Réponses: 4
    Dernier message: 21/02/2006, 14h32
  4. Enregistrement des actions de l'utilisateur
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 14/06/2005, 17h55
  5. Verification des champs d'un formulaire
    Par 164emie dans le forum ASP
    Réponses: 5
    Dernier message: 19/11/2003, 14h03

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