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 et redirection


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Guinée

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 112
    Points : 90
    Points
    90
    Par défaut authentification et redirection
    bonjour tout le monde!
    bon je vais allé direct au sujet! en faite je travail sur un projet de site web j'ai conçu une page de connexion pour les utilisateurs y compris l'administrateur inscrits (enregistrer dans la base de données) pour cela j'ai créer une page profil (profil.html) pour que dès qu'un utilisateur s'identifie avec son pseudo et le mot de passe qu'il soit directement rediriger vers la page de profile mais je veux faire l'exception pour l'administrateur pour que lui il soit redirigé vers la page administrateur (admin.html) et c'est ce que je n'arrive pas à faire. Et j'aimerais que vous m'aidiez! 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
    56
    57
    58
    59
    60
    61
    62
    <?php
     
    // Initialisation de la session
    include('connexion.html');
    $_SESSION['erreur'] ='';
    $_SESSION['connexion'] = '';
    $host=""; // Host name
    $username=""; // Mysql username
    $password=""; // Mysql password
    $db_name="nomdemabase"; // Database name
    $tbl_name="visiteurs"; // Table name
    $_SESSION['pseudo']=$_POST['pseudo'];
    $_SESSION['motdep']=$_POST['motdep'];
    // On vérifie que le login et le mot de passe ont été précisés
    if(!empty($_POST['pseudo']) && !empty($_POST['motdep']))
    {
    session_start();
     
    // Connexion à la base
    $connexion=mysql_connect("localhost", "root", "" )or die("cannot connect" );
    mysql_select_db("nomdemabase" )or die("cannot select DB" );
    mysql_query("SET NAMES 'utf8'" );
     
    // Requete à la base (verification login/mdp)
    $SQL = 'SELECT * FROM visiteurs WHERE pseudo= "'.mysql_real_escape_string($_POST['pseudo']).'" AND mot_de_passe = "'. mysql_real_escape_string($_POST['motdep']).'"';
    $request = mysql_query($SQL, $connexion) or die(mysql_error());
    $data = mysql_fetch_assoc($request);
    if (empty($data) || !sizeof($data)) // Login / Mot de passe invalide
    {
    $_SESSION['erreur'] = 'Login ou mot de passe non valide';
    header("Location:erreurconnexion.html" );
    }
    else
    {
    $data = $data[0];
     
    // Récupération des informations de l'utilisateur dans les variables de session
    $_SESSION['connexion'] = 1;
     
    // Redirection de l'utilisateur vers la page de profil
    header("Location: profil.html" );
    }
    }
    else // Si au moins un champs est vide
    {
    // Définition d'une erreur + Redirection
    $_SESSION['erreur'] = 'Tous les champs doivent être renseignés';
    header("Location: erreurconnexion.html" );
    }
    ?>
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    </body>
    </html>
    Et vous pouvez me poser des questions si nécessaire

  2. #2
    Membre confirmé
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Points : 580
    Points
    580
    Par défaut
    Bonjour,

    Il faudrait que dans la table visiteurs, vous ayez un champ boolean "admin" qui serait à vrai si c'est le cas.

    Ensuite, à l'endroit où il y a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: profil.html" );
    simplement ajouter une condition comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if ($data['admin']) {
      header("Location: admin.html" );
    } else {
      header("Location: profil.html" );
    }
    Quelques détails:

    Étant donné que vous utilisez "mysql_fetch_assoc", vous devez accéder aux données comme j'ai montré et non avec Vous devriez aussi utiliser la fonction PASSWORD de MySQL pour obtenir le hash du mot de passe plutôt que d'écrire le mot de passe en clair dans la base de données

  3. #3
    Membre régulier
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Guinée

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 112
    Points : 90
    Points
    90
    Par défaut authentification et redirection
    j'ai accédé aux données comme vous me l'avez suggerer et c'était OK! Merci d'avance et j'ai constaté aussi qu'en mettant la
    condition sur pseudo sa marche comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    elseif($_POST['pseudo'] == 'admin'){ 
    	header('Location: adminpage.html'); 	
    	} 
    	else{
    	header('Location: profil.html');
    }
    elseif($_POST['pseudo'] == 'admin'){
    header('Location: adminpage.html');
    }
    else{
    header('Location: profil.html');
    }
    Mais j'ai constaté un autre problème au niveau de la vérification du pseudo et du mot de passe c'est à
    dire si l'utilisateur saisi seulement le Pseudo et sans remplir le champ mot de passe ou bien sil rempli le champ mot de
    passe sans remplir le pseudo aucun message d'erreur ne s'affiche et il fait une redirection en affichant la page de verification
    de mon formulaire celle utilisée avec action='verifconnexion.php'
    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
    <?php
    $_SESSION['erreur'] ='';
    $_SESSION['connexion'] = '';
    $host=""; // Host name 
    $username=""; // Mysql username 
    $password=""; // Mysql password 
    $db_name="nomdemabase"; // Database name 
    $tbl_name="visiteurs"; // Table name 
    $_SESSION['pseudo']=$_POST['pseudo'];
    $_SESSION['motdep']=$_POST['motdep'];
    // On vérifie que le login et le mot de passe ont été précisés 
    if(!empty($_POST['pseudo']) && !empty($_POST['motdep']))
    {	
    session_start();
     
    // Connexion à la base 
    $connexion=mysql_connect("localhost", "root", "" )or die("cannot connect" );
    mysql_select_db("nomdemabase" )or die("cannot select DB" );
    mysql_query("SET NAMES 'utf8'" );
     
    // Requete à la base (verification login/mdp) 
    $SQL = 'SELECT * FROM visiteurs WHERE pseudo= "'.mysql_real_escape_string($_POST['pseudo']).'" AND mot_de_passe = "'. mysql_real_escape_string($_POST['motdep']).'"';
    $request = mysql_query($SQL, $connexion) or die(mysql_error());
    $data = mysql_fetch_assoc($request);
    if (empty($data) || !sizeof($data)) // Login / Mot de passe invalide 
    {
    $_SESSION['erreur'] = 'Login ou mot de passe non valide';
     header("Location:erreurconnexion.html" );
    }
    elseif($_POST['pseudo'] == 'admin'){ 
    	header('Location: adminpage.html'); 	
    	} 
    	else{
    	header('Location: profil.html');
    }
     
    }
     
    ?>
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    </body>
    </html>

  4. #4
    Membre confirmé
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Points : 580
    Points
    580
    Par défaut
    De ce que je vois, si l'utilisateur n'est pas valide, un message d'erreur est enregistré dans la session et il y a une redirection à erreurconnexion.html.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     $_SESSION['erreur'] = 'Login ou mot de passe non valide';
     header("Location:erreurconnexion.html" );
    Première chose, le session_start() devrait être au début du fichier et non après les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['erreur'] ='';
    $_SESSION['connexion'] = '';
    Deuxième chose, la redirection devrait plutôt aller à un script php si tu veux pouvoir afficher le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     $_SESSION['erreur'] = 'Login ou mot de passe non valide';
     header("Location: erreurconnexion.php" );
    Dernièrement, dans le fichier erreurconnexion.php, il faudrait mettre le session_start() et un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_SESSION['erreur']
    pour afficher le message.

    HTH

Discussions similaires

  1. [MySQL] Authentification et redirection
    Par magicpierre95 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/05/2009, 21h04
  2. Authentification et redirection
    Par moutey dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/04/2009, 12h37
  3. [ASP.net 2.0] Authentification et redirection
    Par Spoonnny dans le forum ASP.NET
    Réponses: 0
    Dernier message: 20/10/2008, 17h40
  4. Authentification et redirection
    Par KeKeMaN dans le forum MVC
    Réponses: 4
    Dernier message: 02/05/2007, 19h19
  5. authentification (puis redirection)
    Par vever88 dans le forum ASP
    Réponses: 12
    Dernier message: 25/04/2007, 15h42

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