Page 1 sur 1

Session, traitement en fonction du groupe utilisateur

Posté : 11 déc. 2007, 12:54
par arkilon
Bonjur à tous.

J'ai crée une ptite table MySql users qui contient 2 - 3 utilisateurs et un champ groupeusers qui permet de définir dans quels groupe ils appartiennent.

Je voudrait simplement rediriger l'utilisateur sur une page différente en fonction de son groupe :

Exemple :

Si l'utilisateur existe dans la table et appartient au groupe Pharmacie alors j'ouvre la page index.php.

Si l'utilisateur existe dans la table et appartient au groupe Chimiothérapie alors j'ouvre la page chimio.php.

Voici mon code qui pour le moment me renvoi automatiquement sur ma page index.php que je me og en groupe chimiothérapie ou pharmacie :
<?php require_once('Connections/connec1_pharma.php'); ?>
<?PHP
if($_POST["login"] != "" && $_POST["mot_de_passe"] != "")
{
  $login     = $_POST["login"] ;
  $pass      = md5($_POST["mot_de_passe"]) ;
 
  //sélection de la base de données
  $db  = mysql_select_db($database_connec1_pharma, $connec1_pharma) ;
	
  //création de la requête SQL
  $sql = "SELECT * FROM users WHERE login_user = '".$login."' AND pass_user = '".$pass."'"	;
  //exécution de la requête SQL
  $requete = @mysql_query($sql, $connec1_pharma) or die($sql."<br>".mysql_error()) ;
  //on récupère le résultat
  $result = mysql_fetch_object($requete) ;
  //si la requête s'est bien passée
  if(is_object($result))
  {
    //début de la sessions
  $sql2 = "SELECT groupeusers FROM users WHERE login_user = '".$login."' AND pass_user = '".$pass."'"	;
  //exécution de la requête SQL
  $requete2 = mysql_query($sql2, $connec1_pharma) or die($sql."<br>".mysql_error()) ;
  //on récupère le résultat
  $result2 = mysql_fetch_assoc($requete2) ;
    session_start() ;
    //enregistrement d'une variable de session, ici le login de l'utilisateur
    $_SESSION["login"] = $login ;
	$_SESSION["groupe"] = $result2["groupeusers"];
	if ($_SESSION["groupe"] = "Chimiothérapie") {
    header("Location: chimio.php") ;
	}
	if ($_SESSION["groupe"] ="Pharmacie") {
	header("Location: index.php") ;
	}
  }//fin if
  //sinon on retourne à la page d'inscription
  else
  {
    header("Location: auth.php") ;
  }//fin else
}//fin if
/*
  sinon on retourne à la page d'inscription
*/
else
{
  header("Location: auth.php") ;
}//fin else
?>
Merci d'avance pour l'aide que vous pourrez apporter à ma requête.

Cordialement

Posté : 11 déc. 2007, 13:29
par Ryle
Avant d'aller plus loin dans ton code : "=" est un opérateur d'affectation, "==" est un opérateur de comparaison. Ici tu affecte la valeur 'Chimiothérapie' ) ta variable $_SESSION["groupe"], quelle que soit la valeur qu'elle ait pu contenir :
if ($_SESSION["groupe"] = "Chimiothérapie") 

Posté : 17 déc. 2007, 16:37
par arkilon
Merci beaucoup pour ton aide et maintenant que tu me le dis mon dieu que c'est logique mais je e connaissait pas encore.

Merci encore.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 17 déc. 2007, 17:48
par nejme.eddinne
Autres choses
1- vous avez une requete de plus: le champs groupeusers est retourné par la requete sql1
2- session_start(), elle doit être appelé au début de la page

Posté : 17 déc. 2007, 17:57
par Ryle
C'est vrai pour la requête (d'où l'importance de lister les champs retournés et d'éviter le SELECT *) mais c'est faux pour le session_start() :)

Celui-ci peut très bien être placé sur l'avant dernière ligne de votre code, du moment qu'il est déclaré avant de faire appel à $_SESSION et qu'aucune donnée n'a été envoyée au navigateur, il n'y a pas de soucis :)

Le mettre tout en haut n'est qu'une habitude qui a été prise pour être sur de ne pas l'oublier. Il est pourtant plus logique de n'y faire appel que lorsqu'on en a réellement besoin comme cela a été fait ici ;)

Posté : 17 déc. 2007, 17:59
par nejme.eddinne
Merci bcp pour l'info

Posté : 19 déc. 2007, 12:10
par arkilon
Re bonjour à tous.

Ma petite page de vérification fonctionnée trés bien mais j'ai eu un petit soucis avec le fichier et j'ai du le recommencer mais depuis (j'ai repris le code que je vous avez fournis) j'ai le droit à 2 erreurs :

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\pharmacie\verif.php:2) in c:\program files\easyphp1-8\www\pharmacie\verif.php on line 26

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\pharmacie\verif.php:2) in c:\program files\easyphp1-8\www\pharmacie\verif.php on line 31

Je ne comprend pas et j'ai à peu prés tout essayé.

Merci d'avance pour votre aide.

Posté : 19 déc. 2007, 12:18
par Ryle
pour le session_start() (...) Celui-ci peut très bien être placé sur l'avant dernière ligne de votre code, du moment qu'il est déclaré avant de faire appel à $_SESSION et qu'aucune donnée n'a été envoyée au navigateur, il n'y a pas de soucis :)

Posté : 19 déc. 2007, 12:19
par arkilon
EN effet merci Ryle :

En remplacant :
<?php require_once('Connections/connec1_pharma.php'); ?> 
<?PHP 
par
<?php require_once('Connections/connec1_pharma.php');
Ca fonctionne comme avant :)