Session en php

Fermé
deb - 19 févr. 2003 à 11:44
 deb - 24 févr. 2003 à 15:12
salut,

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

wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
19 févr. 2003 à 12:08
a la page de connexion, tu commences par: session_start();
ensuite, tu assignes une variable de session, par ex $_SESSION["user"] = "admin";

Ensuite, sur les autres pages, tu commences aussi par un session_start();
et tu verifies la valeur de $_SESSION["user"] pour savoir si c un admin ou un client.
0
en fait j'ai fait ça:
<?php
// connexion à la base mySQL
mysql_connect("localhost", "root", "");
mysql_select_db("courrier");

// requête qui permet de resortir le niveau de l'utilisateur enregistré
$query = "select * from utilisateurs where loginuti = '$login' and passworduti = '$pass'";
$result = mysql_query($query);
//on compte le nb de lignes de résultat
//si 1 : valide si 0 : aucun login ne correspond
$exist = mysql_numrows($result);

if ($exist<1){
echo'<center>Veuillez vérifier vos données ! </center>';
include ("page_cnx.htm");
}
else {
$ligne = mysql_fetch_array($result)
$compte = $ligne["droituti"];
session_start();
session_register('compte');
if ($compte == 'admin')
{
header("location:page_adming.php");
}
else
{
header("location:page_clientg.php");
}
}
?>

mais je n'ai pas mis de variable $_SESSION["user"]
dans ma bd, j'ai une table utilisateur (loginuti, password, droituti) et droituti peut prendre les valeurs : client ou admin .
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
19 févr. 2003 à 14:42
Remplace :

...
else {
$ligne = mysql_fetch_array($result)
session_start();
$_SESSION['compte'] = $ligne["droituti"];
if ($_SESSION['compte'] == 'admin')
{
header("Location: page_adming.php");
}
else
{
header("Location: page_clientg.php");
}
}


Puis dans tes autres pages (page_adming.php et page_clientg.php) fais :

<?php
session_start();
if ($_SESSION['compte'] == 'admin')
{
// Action pour un Admin
}
else
{
// Action pour un client
}
0
merci...
j'ai fait le script mais ya une erreur et je ne vois pas pourquoi
<?php
// connexion à la base mySQL
mysql_connect("localhost", "root", "");
mysql_select_db("courrier");

// requête qui permet de resortir le niveau de l'utilisateur enregistré
$query = "select * from utilisateurs where loginuti = '$login' and passworduti = '$pass'";
$result = mysql_query($query);
//on compte le nb de lignes de résultat
//si 1 : valide si 0 : aucun login ne correspond
$exist = mysql_numrows($result);

if ($exist>1)
{
$ligne = mysql_fetch_array($result)
$compte = $ligne['droituti'];
session_start();
session_register('compte');
if ($compte == 'admin')
{
header("location:page_adming.php");
}
else
{
header("location:page_clientg.php");
}
}
else {
echo'<center>Veuillez vérifier vos données ! </center>';
include ("page_cnx.htm");
}
?>

ligne 16 ça là qu'est l'erreur .... $compte = $ligne['droituti'];
0

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

Posez votre question
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
19 févr. 2003 à 14:56
Copie d'abord mon script... Comme le dit wiwimagique, il vaut mieux utiliser $_SESSION["user"]. M'enfin...

Il manque un point virgule en fin de ligne ---> $ligne = mysql_fetch_array($result); <--- ICI
0
wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
20 févr. 2003 à 03:19
au lieu de:
$compte = $ligne['droituti'];
session_start();
session_register('compte');
if ($compte == 'admin') {}

utilise:
session_start();
$_SESSION["compte"] = $ligne['droituti'];
if ($_SESSION["compte"] == 'admin') {}

comme ca, je ne pourrais plus aller sur ta page avec cet url: page_admin.php?compte=admin :o)
0
woui mais je croyait qu'il ne fallait pas faire d'affichage avant un header ???
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
19 févr. 2003 à 16:41
Quel affichage ? Où y a-t-il un affichage ?
0
non, j'ai rien dit !!!
l'affichage "echo machin truc" je le laisse apres c'est ça ?
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
19 févr. 2003 à 16:59
A partir du moment où il y a un HEADER(), la suite du code ne sera pas interprété. Cependant, par sécurité, il est recommandé de faire une : exit(); juste après un header()...
0
qu'est ce que tu me conseille alors pour avoir l'affichage s'il n'y a rien qui est saisis et si le login ou le pws ne sont pas pareil ??
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
19 févr. 2003 à 17:05
S'il n'y a rien qui est saisi, tu peux afficher ce que tu veux puisque tu ne feras pas de redirection avec header.
0
et ben woui chui bete !!!
0
et bien ça ne marche toujours pas et j'ai fait ce que vous m'aviez dit !!
0
j'ai une question .... (je sais encore!!) ma page page_adming.php ne peut etre vue que par l'administrateur, donc pas besoin de de mettre ça :

<?php
session_start();
if ($_SESSION['compte'] == 'admin')
{
// Action pour un Admin
}
else
{
// Action pour un client
}
0
wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
20 févr. 2003 à 10:46
il faut mettre ca:

<?php
session_start();
if ($_SESSION['compte'] != 'admin')
die("Acces refuse");

//Suite du programme
0
woui, mais cette page n'est vue que par l'administrateur et pas par les clients
0
de toutes faaçons, j'arrive meme pas à faire marcher la fenetre de cnx !!!
j'ai changé le code et c'est ça maintenant :
<?php
// connexion à la base mySQL
mysql_connect("localhost", "root", "");
mysql_select_db("courrier");

// requête qui permet de resortir le niveau de l'utilisateur enregistré
$query = "select * from utilisateurs where loginuti = '$login' and passworduti = '$pass'";
$result = mysql_query($query);
//on compte le nb de lignes de résultat
//si 1 : valide si 0 : aucun login ne correspond
$exist = mysql_numrows($result);

if ($exist==1)
{
$ligne = mysql_fetch_array($result);
session_start();
$_SESSION['compte'] = $ligne["droituti"];
if ($_SESSION['compte'] == 'admin')
{
header("location:page_adming.php");
}
else
{
header("location:page_clientg.php");
}
}
else
{
echo'<center>Login ou Mot-de-passe incorrects ! </center>';
include ("page_cnx.htm");
}
?>
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
20 févr. 2003 à 11:36
Vérifie chaque erreur à chaque étape...

<?php
// connexion à la base mySQL
mysql_connect("localhost", "root", "") or die("Erreur connexion : ".mysql_error());
mysql_select_db("courrier") or die("Erreur select DB : ".mysql_error());

// requête qui permet de resortir le niveau de l'utilisateur enregistré
$query = "SELECT * FROM utilisateurs WHERE loginuti = '$login' AND passworduti = '$pass'";

//print $query; // Au cas où tu voudrais verifier ta requete.

$result = mysql_query($query) or die("Erreur Query : ".mysql_error());

//on compte le nb de lignes de résultat
//si 1 : valide si 0 : aucun login ne correspond
$exist = mysql_num_rows($result); <----- ERREUR: t'utilisais une mauvaise fonction

if ($exist==1)
{
$ligne = mysql_fetch_array($result);
session_start();
$_SESSION['compte'] = $ligne["droituti"];
if ($_SESSION['compte'] == 'admin')
{
header("location:page_adming.php");
}
else
{
header("location:page_clientg.php");
}
}
else
{
echo'<center>Login ou Mot-de-passe incorrects ! </center>';
include ("page_cnx.htm");
}
?>
0
ben ça marche tjs pas !!!
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
20 févr. 2003 à 12:07
c'est normal que ça ne marche pas, je n'ai rien corrigé.
Mais je t'ai donné des outils pour débugguer ton code.

"ça ne marche pas", est une jolie phrase, mais il faut l'agrémenter des code d'erreur que tu as.
0