Comment rediriger vers des pages différentes suivant le statut ?

Comment rediriger vers des pages différentes suivant le statut ? - PHP - Programmation

Marsh Posté le 29-03-2006 à 10:23:39    

Bonjour.
Je suis bloqué depuis 3 jours (quel mauvais !) devant un problème qui n'en est surement pas un pour les "bêtes de PHP que vous êtes".
En fait, je voudrais rediriger la personne qui se connecte sur un accès réservé de ma page d'accueil vers une page ou une autre ou encore une autre en fonction de son statut.
Je ne sais pas comment récupérer la variable page correspondante et comment l'utiliser.
 
J'ai créé une table avec email, password, statut et page :  
 
id         email         password        statut              page
1      toto@free.fr      xxxxx           admin        page1.php
2      titi@free.fr        xxxxx        utilisateur      page2.php
3      tutu@free.fr      xxxxx        utilisateur2      page3.php

 
Voici le code source de ma page (avec l'aide de Dreamweaver) :
 
<?php require_once('Connections/db158466536.php'); ?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}
 
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
 
if (isset($_POST['email'])) {
  $loginUsername=$_POST['email'];
  $password=$_POST['password'];
  $MM_fldUserAuthorization = "statut";
  $MM_redirectLoginSuccess = "page.php";
  $MM_redirectLoginFailed = "login_error.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_db158466536, $db158466536);
   
  $LoginRS__query=sprintf("SELECT email, password, statut, page FROM login WHERE email='%s' AND password='%s'",
  get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));  
   
  $LoginRS = mysql_query($LoginRS__query, $db158466536) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     
    $loginStrGroup  = mysql_result($LoginRS,0,'statut');
     
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;        
 
    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];  
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>

 
Merci encore pour votre aide.
Bien amicalement


Message édité par kawasakix le 29-03-2006 à 12:04:31
Reply

Marsh Posté le 29-03-2006 à 10:23:39   

Reply

Marsh Posté le 29-03-2006 à 13:46:04    

mais les gens arrêter de faire du PHP via dreamweaver.
 
dreamweaver ca vous sert à créer vos pages mais svp, apprenez à coder correctement. Le code généré par dreamweaver est atroce. Le pire c'est qu'il fait des trucs que tu ne comprends sûrement pas donc tu n'avanceras pas comme ca.
 
pour ton probleme voila ce que tu dois faire :
 
 
tu fais ta requetes comme ca
 
$req = mysql_query ("SELECT email, password, statut, page FROM login  WHERE email='%s' etc)
 
pense à limiter ton résultat avec LIMIT 1 <-- tu recup qu'un enregistrement au cas ou tu aies plusieurs fois la même adresse mail dans ta base
 
 
ensuite tu vérifie qu'il y a au moins un enregistrement

Code :
  1. if (mysql_num_rows($req) > 0) {
  2.   // tu recup les infos
  3.   $result = mysql_fetch_array($req); //pcq tu as qu'un enregistrement sinon il faudrait faire une boucle
  4.   $_SESSIOn['email'] = $result['email'];
  5. //et tu redirige direct ac le lien de la page
  6. header ('Location: '.$result['page']);
  7. }
  8. else { echo ('pas d'utilisateur'); }


 
voila tu as déjà la trame de comment faire ta redirection. ++


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 29-03-2006 à 13:53:30    

Je te remercie pour ton aide. Toutefois, je suis "un peu" agé et mon disque dur (cerveau) commence à saturer. Tout ceci pour te dire que je suis nul en programmation. Aussi, Dreamweaver me permettait d'arriver à un minimum de résultat, même si comme toi, je suis convaincu que c'est un pis aller. J'arrive donc à rediriger sur une page ou l'autre ($MM_redirectLoginSuccess = "page.php";  
  $MM_redirectLoginFailed = "login_error.php";) mais pas d'effectuer un choix. Je vais essayer ce que tu me dis même si cela semble, en plus simple, de se rapprocher de ce qu'a fait Dream.

Reply

Marsh Posté le 30-03-2006 à 09:35:36    

tu fais une requete qui selection l'adresse de ta page de redirection :

Code :
  1. $sql = "select page from Table where id=".$id.";
  2. $page = array_pop(mysql_fetch_array(mysql_query($sql)));


et ensuite tu insère ça dans ton code

Code :
  1. echo "<script language='javascript'>document.location=".$page.";</script>";

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed