session: utilisateur vs admin (merci TRUC :) )

Eléphant du PHP | 319 Messages

16 oct. 2007, 20:51

hello,

bon, grace a vous j'avanace a la vitesse du cheval au trot (le gallop ca sera pour plus tard ;) )

j'en suis au sessions. j'ai des utilisateurs et un admin pour le site (normal jusque la)
je souhaiterais que les utilisateurs, apres s'etre logges voient une certaine page (index.php) et que l'admin soit redirige vers une zone d'admin (index.php dans un autre repertoire) et que les utilsateurs n'aient pas acces a cette zone

j'ai ce code qui marche pour l'identification mais qui ne prends pas en compte le champs "level":

Code : Tout sélectionner

<?php // we must never forget to start the session session_start(); $errorMessage = ''; if (isset($_POST['email']) && isset($_POST['password'])) { include 'includes/config.php'; $email = $_POST['email']; $password = $_POST['password']; // check if the user id and password combination exist in database $query = "SELECT * FROM clients WHERE email = '$email' AND password = md5('$password')"; $result = mysql_query($query) or die('Query failed. ' . mysql_error()); if (mysql_num_rows($result) == 1) { // the user id and password match, // set the session $_SESSION['in'] = true; // after login we move to the main page header('Location: index.php'); exit; } else { $errorMessage = 'Sorry, wrong user id / password'; print "$errorMessage"; } mysql_close(); } ?>
comment faire pour que le champs "level" soit discriminant et renvoit vers une page differente si level = 0 => index.php si level = 1 => admin/index.php (que que cette page ne soit pas accessible aux utilisateurs donc)

merci :)
Modifié en dernier par choubix le 16 oct. 2007, 22:40, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 oct. 2007, 21:11

Piur la redirection tu l'as dis toi même :
si level = 0 => index.php si level = 1 => admin/index.php
Donc a prendre en compte dans le header()

Pour vérifier si un membre essaie d'accéder à une page non autorisée tu peux ajouter un simple test en debut de fichier:
if( $_SESSION['level'] != 1)
  header('Location: index.php');

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 319 Messages

16 oct. 2007, 21:31

hello Truc,

pour stocker le "level" en variable de session puis faire mon test ("if" je suppose): je dois repasser par un SELECT dans ma table? ou je remplace mon SESSION['in'] par SESSION['level'] ??

merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 oct. 2007, 22:17

Tu ajoutes... tu peux stocker un paquet de choses en session. Tu peux donc avoir un "in" et un "level"... le nom, prénom, mail etc.

$data = mysql_fetch_assoc($result);
$_SESSION['in'] = true;
$_SESSION['level'] = $data["evel"]; // pour un champ "level" de la base de données.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 319 Messages

16 oct. 2007, 22:39

ca marche au poil :)

vraiment merci de passer du temps a repondre a ces questions qui doivent sembler vraiment tres simple avec un peu d'experience derriere soi...

j'ai rajoute un switch apres pour differencier le cas 0 ou 1. ca marche pas mal

je me derouille, ca revient :)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 oct. 2007, 00:11

Au plaisir :wink:

Tu n'as pas besoin d'éditer ton 1er message juste cliquer sur le bouton Image en haut à gauche de ce sujet.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute