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 :

Zone administration sécurisée [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Par défaut Zone administration sécurisée
    Bonjour à tous,
    Je sui en train de mettre sur mon site une zone d'administration, pour l'accès un formulaire.
    Les identifiants et mdp sont stockés dans une base de données.
    Une fois le formulaire rempli et envoyé, j'ouvre une page de validation pour la vérification.
    Mon problème se trouve à ce niveau, en effet, si j'entre le premier identifiant et mdp associé, pas de soucis, par contre si j'entre le second identifiant avec son mdp associé, il me rejette.

    voici le code du début de ma page de validation :

    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
     
    <?php
    session_start();
     
    if (!empty($_POST['pseudo']) && !empty ($_POST['pass']))
    {
     
    include( "../config.php" );
    $connect = mysql_connect ( $host , $user , $pass ) or die ( 'Erreur de connexion !!!' );     
    $dbselect = mysql_select_db ( $db ) or die ( 'Erreur de connexion &agrave; la base !' ); 
    $sql = "SELECT * from user" ; 
    $req = mysql_query ( $sql ) or die ( 'Erreur requête !!!' );
     
    while ($validation = mysql_fetch_array ( $req ) )
    	{
    		if ($_POST['pseudo']!==$validation['user_pseudo'])
    			{
    			echo "Vous n'avez pas accès à ce module !!!";
    			break;
    			}
    		elseif ($_POST['pass']!==$validation['user_mdp'])
    			{
    			echo "Vous n'avez pas accès à ce module !!!";
    			break;
    			}
    		else
    			{
    $_SESSION['identifiant']=$_POST['pseudo'];
    $_SESSION['mdp']=$_POST['pass'];
    ?>
    <html>
    <head>
    </head>
    <boby>
    zone affichage si ok
    </body>
    </html>
    <?php
    break;
    			}			
    	}
    }
    else
    {
    echo "Vous n'avez pas rempli tous les champs, veuillez recommencer !!!";
    }
    ?>
    voilà, je n'arrive pas à comprendre pourquoi il ne prnd en compte que le premier enregistrement de ma base de données.

    Merci.
    Jean-luc

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($_POST['pseudo']!==$validation['user_pseudo'])
    Pour !== ça risque pas trop de fonctionner c'est soit != ou ==

    Pareil pour le else if

    A++

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Par défaut toujours pas
    Merci extraman1 pour ta réponse, mais mon soucis n'est toujours pas résolu, je ne prends que la première entrée de ma base "user", hors j'aimerais qu'il vérifie toute ma base user et fasse une comparaison.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Par défaut débug
    j'ai effectué un débug pour vérifier si ma boucle "while" fonctionne bien :

    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
     
    <?php			
    session_start();
     
    if (!empty($_POST['nom']) && !empty ($_POST['pass']))
    {
     
    include( "../config.php" );
    $connect = mysql_connect ( $host , $user , $pass ) or die ( 'Erreur de connexion !!!' );     
    $dbselect = mysql_select_db ( $db ) or die ( 'Erreur de connexion &agrave; la base !' ); 
    $sql = "SELECT * from user" ; 
    $req = mysql_query ( $sql ) or die ( 'Erreur requête !!!' );
     
    while ($validation = mysql_fetch_array ( $req ) )
    	{
    		/*if ($_POST['nom']!=$validation['user_pseudo'])
    			{
    			echo "Vous n'avez pas accès à ce module, pseudo incorrecte !!!";
    			}
    		elseif ($_POST['pass']!=$validation['user_mdp'])
    			{
    			echo "Vous n'avez pas accès à ce module, mot de passe incorrecte !!!";
    			}
    		else
    			{*/
    // débugage
                   echo $validation['user_pseudo];
                   echo $validation['user_mdp'];
    
    $_SESSION['identifiant']=$_POST['pseudo'];
    $_SESSION['mdp']=$_POST['pass'];
    ?>
    donc là il m'affiche bien tous les pseudo's et le mot de passe.
    si je remet le code normal (boucle if) avec le débug, il m'affiche les résultats avec l'alerte suivante : Vous n'avez pas accès à ce module, pseudo incorrecte !!!

  5. #5
    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
    Par défaut
    Fais un print_r($_POST); pour controler ce qu'envoi ton formulaire.

    Le champ de formulaire c'est "pseudo" ou c'est "nom" ? Car tu utilises les deux pour apparemment la meme chose.

    Et sinon pourquoi tu ne fais pas simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT * from user WHERE user_pseudo="xxxxxx" AND user_mdp="xxxxxx"';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Par défaut
    merci sabotage pour ton message, le problème à la requette sql c'est que si le nom ou le pass est ok il valide, dans ce cas à quoi bon lui demander les deux champs ???

    Merci.

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

Discussions similaires

  1. zone administrative : vos conseils
    Par joprog dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/12/2010, 15h48
  2. Zone administrative pour un blog
    Par tupapau dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 20/07/2009, 12h29
  3. [SQL] protection zone administration
    Par clem67 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/12/2007, 14h00
  4. Réponses: 1
    Dernier message: 30/07/2007, 12h18
  5. [FTP] Zone de téléchargement sécurisée sur un site.
    Par Périgord Noir dans le forum Langage
    Réponses: 1
    Dernier message: 07/11/2006, 14h48

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