Authentification et redirection

ensat10 Messages postés 29 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 29 janvier 2011 - 24 janv. 2011 à 17:02
ensat10 Messages postés 29 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 29 janvier 2011 - 29 janv. 2011 à 21:59
Salut tout le monde,j'ai une petit site à réaliser , mais je n'arrive pas à savoir comment faire cela:

Dans ma base de données,j'ai une table d'utilisateurs ,ces derniers font parties de plusieurs départements.

Chaque utilisateur devrait , après l'authentification être redirigé à une page selon le département dont il fait partie,et n'a pas le droit d'accéder aux autres pages concernant les autres départements.

Pourriez-vous me conseiller comment travailler cela,quoi chercher et avec quelle méthode je pourrais le faire?

et merci d'avance.

6 réponses

ensat10 Messages postés 29 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 29 janvier 2011
25 janv. 2011 à 01:27
Tjrs pas de réponses
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
27 janv. 2011 à 10:26
Bonjour,

Dans ton script d'authentification tu peut au choix :
--> Stocker en variable de session ou cookies le département de la personne et ensuite redirigé vers la page.
Il suffit de vérifié la variables en session ou cookies pour savoir si la personne peut ou non visualiser la page

--> Sur chaque page, vérifié en base si l'utilisateur est du département ou non.


Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
0
ensat10 Messages postés 29 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 29 janvier 2011
27 janv. 2011 à 14:49
Merci pr ta réponse:
Voilà j'ai fait ce que t'as dis:
 <?php
    session_start();

    $BD_serveur     = "localhost";
    $BD_utilisateur = "root";
    $BD_motDePasse  = "";
    $BD_base        = "mabase";

    $id         = $_POST["Login"];
    $motDePasse = $_POST["Password"];

    @mysql_connect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
        or die("Impossible de se connecter au serveur de bases de données.");
    @mysql_select_db($BD_base)
        or die("Impossible de se connecter à la base de données.");
 
    $requete = "SELECT * FROM employe ".
                       " WHERE Login='$id'";
$req = "SELECT Departement FROM employe WHERE Login='$id'";				                      
    $result = @mysql_query($requete);
$res = @mysql_query($req);
    
    if ($enreg = @mysql_fetch_array($result)) {
if ($res == 'Logistic') {
       
        $_SESSION["membre"] = TRUE;
        $_SESSION["membreid"] = $id;
        header("Location: stocks.php");
        die();
    }
elseif ($res == 'Ventes') {
 $_SESSION["membre"] = TRUE;
        $_SESSION["membreid"] = $id;
        header("Location: ventes.php");
        die();}
elseif ($res == 'Administration') {
 $_SESSION["membre"] = TRUE;
        $_SESSION["membreid"] = $id;
        header("Location: EspaceAdmin.php");
        die();}	}

 else {
        $_SESSION["membre"] = FALSE;
       echo "Paramètres inconnus";
    }

?>


Mais malheureusement ca ne marche pas,lorsque j'insère un identifient invalide ca va ce ca me retourne 'Paramètres inconnus',sinon lorsque je m'authentifie comme étant employé d'un certain département ca ne me redirige pas vers la page voulue.
Merci d'avance.
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 janv. 2011 à 16:21
Salut,

Plusieurs remarques :
- Tu ne vérifie jamais si le mot de passe est le bon, il faut absolument changer ça.
- Tu es sensible aux injections SQL, il te faut également changer ça.
- Ta variable $res est du type ressource mysql, tu ne peux pas l'utiliser directement pour comparer le résultat avec des chaînes de caractère. Comme pour ton autre requête, il te faut passer par mysql_fetch_array() ou autre fonction de ce genre.
- Tu as du code redondant qu'il est possible de déplacer afin de ne pas avoir de telles redondances.
- Ta variable $_SESSION["membre"] ne sert à rien, normalement si $_SESSION["membreid"] contient un identifiant c'est que la personne est bien un membre.
- J'espère que tu vérifie bien à chaque page que la personne y a bien accès, il ne faudrait pas que la vérification soit faite uniquement ici.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ensat10 Messages postés 29 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 29 janvier 2011
27 janv. 2011 à 22:56
Merci pour ta réponse et excuse mon niveau c'est que je suis toute débutante mais j'essaye de m'accrocher.

J'ai essayé de rectifier mon code selon tes remarques,concernant le mot de passe,j'ai pensé bien sur à ca mais reste le problème de cryptage,dans la base de données c'est crypté,alors lorsque l'utilisateur l'insère ce n'est pas crypté,et il y a une comparaison entre les deux ,j'ai pensé à utiliser le crypt() mais bon.

Voilà mon code , bien sur ce n'est pas le parfait puisque ca ne marche toujours pas!!!


<?php
    session_start();

    $BD_serveur     = "localhost";
    $BD_utilisateur = "root";
    $BD_motDePasse  = "";
    $BD_base        = "cosmecoorp";

    $id         = $_POST["Login"];
    $motDePasse = crypt($_POST["Password"]);

    @mysql_connect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
        or die("Impossible de se connecter au serveur de bases de données.");
    @mysql_select_db($BD_base)
        or die("Impossible de se connecter à la base de données.");
 
    $requete = "SELECT * FROM employe ".
                       " WHERE Login='$id' and Password='$motDePasse'";
$req1 = "SELECT Departement FROM employe WHERE Login='$id' Password='$motDePasse' and Departement='Logistic'";	
$req2 = "SELECT Departement FROM employe WHERE Login='$id' Password='$motDePasse' and Departement='Ventes'";	
$req3 = "SELECT Departement FROM employe WHERE Login='$id' Password='$motDePasse' and Departement='Administration'";				                      
    $result = @mysql_query($requete);
$res1 = @mysql_query($req1);
$res2 = @mysql_query($req2);
$res3 = @mysql_query($req3);
    
    if ($enreg = @mysql_fetch_array($result)) {
if ($a = @mysql_fetch_array($res1)) {
       
        $_SESSION["membre"] = TRUE;
        $_SESSION["membreid"] = $id;
        header("Location: stocks.php");
        die();
    }
elseif ($b = @mysql_fetch_array($res2)) {
 $_SESSION["membre"] = TRUE;
        $_SESSION["membreid"] = $id;
        header("Location: ventes.php");
        die();}
elseif ($c = @mysql_fetch_array($res3)) {
 $_SESSION["membre"] = TRUE;
        $_SESSION["membreid"] = $id;
        header("Location: EspaceAdmin.php");
        die();}	
}
 else {
        $_SESSION["membre"] = FALSE;
       echo "Paramètres inconnus";
    }

?>


Et merci encore pour votre temps et votre aide.
0
ensat10 Messages postés 29 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 29 janvier 2011
29 janv. 2011 à 21:59
Pourriez-vous m'aider à corriger mon code? j'ai vraiment besoin de l'aide..
0
Rejoignez-nous