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 :

Authentification à partir de deux table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 53
    Par défaut Authentification à partir de deux table
    Bonjour;

    Je suis entrain de rediger un script d'authentification,le probleme que je rencontre est que je dois utiliser deux tables (utilisateur et client) pour permettre aux administrateurs et aux clients d'avoir des comptes utilisateurs.
    ça a marché lorsque j'ai effectué ceci sur une seule table,mais lorsque j'ai ajouter le code pour le second tout le code concernant le premier table était ignoré;c'est à dire lorsque je veut m'authentifier seuls les logins et les mots de passe du second tables sont reconnus.

    voici le 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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    <?php require_once('connexion2.php'); ?>
    <?php
     
    session_start(); // début de session
     
    if (isset($_POST['login'])){ // execution uniquement apres envoi du formulaire (test si la variable POST existe)
    	$login = addslashes($_POST['login']); // mise en variable du nom d'utilisateur
    	$pass = addslashes($_POST['pass']); // mise en variable du mot de passe 
    /*-----------------------TABLE UTILISATEURS---------------------*/	
    // requete sur la table administrateurs (on récupère les infos de la personne)
    mysql_select_db($database_dbprotect, $dbprotect);
    $verif_query=sprintf("SELECT * FROM utilisateurs WHERE login='$login' AND pass='$pass'"); // requête sur la base administrateurs
    $verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
    $row_verif = mysql_fetch_assoc($verif);
    $utilisateur = mysql_num_rows($verif);
     
     
    	if ($utilisateur) {	// On test s'il y a un utilisateur correspondant
     
    	    session_register("authentification"); // enregistrement de la session
     
    		// déclaration des variables de session
    		$_SESSION['privilege'] = $row_verif['privilege']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
    		$_SESSION['nom'] = $row_verif['nom']; // Son nom
    		$_SESSION['prenom'] = $row_verif['prenom']; // Son Prénom
    		$_SESSION['login'] = $row_verif['login']; // Son Login
    		$_SESSION['pass'] = $row_verif['pass']; // Son mot de passe (à éviter)
     
    		header("Location:accueil1.php"); // redirection si OK
    	}
    	else {
    		header("Location:Accueil.php?erreur=login"); // redirection si utilisateur non reconnu
    	}
     
    /*-------------------fin TABLE utilisateurs---------------------------*/
     
    	/*-----------------------TABLE CLIENT---------------------*/
    $verif_query=sprintf("SELECT * FROM client WHERE login='$login' AND pass='$pass'"); // requête sur la base administrateurs
    $verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
    $row_verif = mysql_fetch_assoc($verif);
    $utilisateur = mysql_num_rows($verif);
     
     
    	if ($utilisateur) {	// On test s'il y a un utilisateur correspondant
     
    	    session_register("authentification"); // enregistrement de la session
     
    		// déclaration des variables de session
    		$_SESSION['privilege'] = $row_verif['privilege']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
    		$_SESSION['nom'] = $row_verif['RaisonSociale']; // Son nom
    		$_SESSION['prenom'] = $row_verif['Responsable']; // Son Prénom
    		$_SESSION['login'] = $row_verif['login']; // Son Login
    		$_SESSION['pass'] = $row_verif['pass']; // Son mot de passe (à éviter)
     
    		header("Location:accueil1.php"); // redirection si OK
    	}
    	else {
    		header("Location:Accueil.php?erreur=login"); // redirection si utilisateur non reconnu
    	}
     
    /*-------------------fin TABLE CLIENT---------------------------*/
    }
     
    // Gestion de la  déconnexion
    if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un contexte de déconnexion
    	$prenom = $_SESSION['prenom']; // On garde le prénom en variable pour dire au revoir (soyons polis :-)
    	session_unset("authentification");
    	header("Location:Accueil.php?erreur=delog&prenom=$prenom");
    }
    ?>

    Merci d'avance.

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Si j'ai bien compris, ta table utilisateur correspond aux administrateur et ta table client contient seulement tes clients.

    Si c'est bien le cas, arrête toi tout de suite et retravaille ta base.

    Tu ne doit avoir qu'une table utilisateur, qui contient aussi bien les admins que les clients et dans cette table tu as une clé étrangère en référence à une table privilège ou grade par exemple ou mieux une table intermédiaire faisant le lien entre l'id utilisateur et l'id privilège.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 53
    Par défaut
    Citation Envoyé par gwharl Voir le message
    Si j'ai bien compris, ta table utilisateur correspond aux administrateur et ta table client contient seulement tes clients.

    Si c'est bien le cas, arrête toi tout de suite et retravaille ta base.

    Tu ne doit avoir qu'une table utilisateur, qui contient aussi bien les admins que les clients et dans cette table tu as une clé étrangère en référence à une table privilège ou grade par exemple ou mieux une table intermédiaire faisant le lien entre l'id utilisateur et l'id privilège.

    Merci pour ta réponse ,le problème ici est que la table client contient plusieurs champs;c'est pourquoi je veux éviter la fusion des deux tables...

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    Tu n'as pas compris en gros tu aurais :

    une table utilisateur avec id login mdp droit

    une table client avec

    id utilisateur+ champ nécessaire pr caractériser un client

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

Discussions similaires

  1. Comment faire un rapport à partir de deux tables !?
    Par linger dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 30/03/2009, 20h18
  2. Réponses: 6
    Dernier message: 26/06/2008, 03h53
  3. Réponses: 1
    Dernier message: 20/02/2008, 11h34
  4. Créer une table a partir de deux tables existantes
    Par Aguiran dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/12/2006, 08h16
  5. Requete Delete à partir de deux tables
    Par Le_Phasme dans le forum Access
    Réponses: 2
    Dernier message: 09/10/2006, 10h22

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