Session en php
je voudrais inclure les sesions dans mon site mais j'ai encore un peut de mal.
en fait, qd une personne entrera sur mon site, il devra remplir une fenetre de connexion ( il sera soit admin soit client)
il sera redirigé vers sa page en fonction de son statut.... là j'arrive à voir, mais c'est aores, comment on fait pour savoir sur les autres pages si c'est un client ou un administrateur ???
merci !
52 réponses
Gestion des sessions PHP et de la redirection selon le rôle (admin ou client) après connexion, afin d'envoyer l'utilisateur vers la page adaptée à son statut. Une solution clé consiste à stocker le droit dans une variable de session après session_start(), puis rediriger selon sa valeur avec header('Location: page_admin.php') ou header('Location: page_client.php'). Des erreurs telles que headers already sent surviennent si des sorties sont émises avant les en-têtes; la solution consiste à ne pas faire d'echo/print avant les header ou à organiser le débogage autrement. Plusieurs astuces pratiques incluent le débogage ciblé des valeurs via echo ou var_dump et la vérification que les branches admin et client couvrent bien tous les cas possibles sans laisser apparaître une page neutre.
-
en fait, j'ai ajouté d'autres trucs en sur mon fichier connexion mais je n'arrive pas à récupérer cette valeur dans un autre script
-
j'ai trouvé c'était un faute de frappe !!! par contre je voudrais savoir comment faire pour récupérer le login de l'utilisateur pour l'utilisé dans les autres pages
-
woui, je sais mais comment faire pour qu'il y ai qqchose dedans ???
-
je faisais reference a ca:
query = SELECT * FROM utilisateurs WHERE loginuti = 'admin' AND passworduti = 'admin'
variable de session =
apparement ya rien dans la variable de session... -
ben pour la base c'est déja fait mais pour la requete, je vois pas ce qui cloche !!!
// requête qui permet de resortir le niveau de l'utilisateur enregistré
$query = "SELECT * FROM utilisateurs WHERE loginuti = '$login' AND passworduti = '$password'";
$result = mysql_query($query) or die ("Erreur Query : ".mysql_error()); -
ta requete pour trouver la personne avec ton login/pass dans la base ne trouve rien, c'est ce que j'essaie de te dire.
Verifie ta base et ta requete. -
et ben si j'ai bien un admin dans ma bd et il est renté comme il faut !!!
-
c'est ça qu'il faut que je mette ??
-
c simple, tu n'as pas d'utilisateur avec admin en login et en pass, ou alors mal ecrit.
if ($_SESSION['compte'] == 'admin') // faux donc je saute le block1
{
header("location:page_adming.php"); // block 1
}
else
{
if ($_SESSION['compte'] == 'client') // faux donc je saute le block 2
{
header("location:page_clientg.php"); // block 2
}
// j'aterris donc ici: le block 3. Qui n'affiche strictement rien
}
}
else
{
echo'<center>Login ou Mot-de-passe incorrects ! </center>';
include ("page_cnx.htm");
} -
j'ai essayer de remettre ça, mais ça ne vas toujours pas!
if ($exist==1)
{
$ligne = mysql_fetch_array($result);
session_start();
$_SESSION['compte'] = $ligne['droituti'];
if ($_SESSION['compte'] == 'admin')
{
header("location:page_adming.php");
}
else
{
if ($_SESSION['compte'] == 'client')
{
header("location:page_clientg.php");
}
}
}
else
{
echo'<center>Login ou Mot-de-passe incorrects ! </center>';
include ("page_cnx.htm");
}
je ne comprends pas pourquoi ma requete ne va pas !! -
bon, alors je peux rentrer, mais le truc c'est que j'arrive sur une page blanche ! et pour les deux (client et administrateur) , alors qu'avant qund je me loguait soit en client soit en admin, j'avais toujours la meme page qui apparaissait : celle du client ...... et là c'est le vide !!! remarque,avec cette page blanche on se croirait à la montagne !!!
-
je ne comprends pas pourquoi la variable de connexion est vide vue que je la récupere !
-
et ben ça me met ça :
query = SELECT * FROM utilisateurs WHERE loginuti = 'admin' AND passworduti = 'admin'
variable de session =
apparement ya rien dans la variable de session...
et pourtant, je peux "rentrer" en tant que client ! -
dis-moi ce qui est affiche chez toi avec ca:
if ($exist==1)
{
$ligne = mysql_fetch_array($result);
session_start();
$_SESSION['compte'] = $ligne['droituti'];
echo "query = ".$query."<br>";
echo "variable de session = " . $_SESSION['compte']:
}
else
{
echo'<center>Login ou Mot-de-passe incorrects ! </center>';
include ("page_cnx.htm");
}
ton $_SESSION['compte'] ne vaut ni admin ni client. cela vient soit de la requete, soit du champ entre dans ta db (majuscule, espace) -
bon, alors j'ai essayé mais j'ai une page blanche ... pourquoi ???
-
Non, d'après le code que tu montres le 20/02/2003 à 15:49 , l'indentation est correcte :
if ($exist==1)
{
$ligne = mysql_fetch_array($result);
session_start();
$_SESSION['compte'] = $ligne['droituti'];
if ($_SESSION['compte'] == 'admin')
{
header("location:page_adming.php");
}
else
{
if ($_SESSION['compte'] == 'client')
{
header("location:page_clientg.php");
}
}
}
else
{
echo'<center>Login ou Mot-de-passe incorrects ! </center>';
include ("page_cnx.htm");
}
-
j'ai affiché une par une les variables et ya qqchose qui me chagrine ... $exist est à 1 ! c'est normal ou pas ? et apres on met
if ($exist==1){ -
et ça peut pas etre parce que j'ai deux else a la suite ???
-
Effectivement.
Si tu print, le HEADER() ne s'effectuera pas et un warning s'affichera pour le dire.
Mais ceci est pour debugguer, donc provisoire.
Tu affiches, tu vois ce que contiennent tes variables, si ça te convient, tu enlève les PRINT et tu essai de nouveau en trouvant qu'est-ce qui cloche d'autre.
-
mais je croyait qu'on ne pouvait pas avec les header !!!
ce que je ne comprends pas c'est pourquoi quand je me logue en admin (dans ma table utilisateur , j'ai un champs droituti qui contient admin ou client) il me renvoie sur la page client ?
- 1
- 2
- 3