redirection en php

Eléphanteau du PHP | 12 Messages

24 mai 2014, 13:24

bonjour, j'ai besoin d'aide pour rediriger un user qui se connecte vers son espace membre, en fait, j'ai 3 pages en fonction de celui qui se connecte et j'ai une table user(id_user, username, password, id_role) avec id_role une clé étrangère pour reconnaitre le role de l'utilisateur, exemple, id_role=1 est un admin.

le problème c'est que je n'arrive pas à rediriger celui qui connecte vers l'espace membre qui lui ai dédié.

index.php
    <?php
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

    $base = mysql_connect ('localhost', 'root', '');
    mysql_select_db ('nice', $base);

    // on teste si une entrée de la base contient ce couple login / pass
    $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_real_escape_string($_POST['login']).'" AND password="'.mysql_real_escape_string(md5($_POST['pass'])).'"';
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $data = mysql_fetch_array($req);
    $sql2 = 'SELECT id_role FROM membre WHERE login="'.mysql_real_escape_string($_POST['login']).'" AND password="'.mysql_real_escape_string(md5($_POST['pass'])).'"';
    $req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $role = mysql_fetch_object($req2);
	
	
	
	
    mysql_free_result($req);
	mysql_free_result($req2);
    mysql_close();

    // si on obtient une réponse, alors l'utilisateur est un membre
    if ($data[0] == 1 && $role==1) {
    session_start();
    $_SESSION['login'] = $_POST['login'];
    header('Location: administrateur.php');
    exit();
    }
	elseif ($data[0] == 1 && $role==2) {
    session_start();
    $_SESSION['login'] = $_POST['login'];
    header('Location: charge_etude.php');
    exit();
    }
	elseif ($data[0] == 1 && $role==3) {
    session_start();
    $_SESSION['login'] = $_POST['login'];
    header('Location: membre.php');
    exit();
	}
    // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
    elseif ($data[0] == 0) {
    $erreur = 'Compte non reconnu.';
    }
    // sinon, probléme bdd
    else {
    $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
    }
    }
    else {
    $erreur = 'Au moins un des champs est vide.';
    }
    }
    ?>
    <html>
    <head>
    <title>Accueil</title>
    </head>

    <body>
    Connexion à l'espace membre :<br />
    <form action="index.php" method="post">
    Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
    Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
    <input type="submit" name="connexion" value="Connexion">
    </form>
    <a href="inscription.php">Vous inscrire</a>
    <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    ?>
    </body>
    </html>

ViPHP
xTG
ViPHP | 7331 Messages

24 mai 2014, 15:16

var_dump($role);
te donnera plus d'informations sur ce que tu fais de mal. ;)