Connexion/Redirection

Fermé
Ibilolz Messages postés 131 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 26 juin 2023 - 24 avril 2014 à 15:48
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 - 24 avril 2014 à 20:51
Bonjour, je travaille sur petit site pour le lycée ou j'effectue mon stage, ce site est l'inventaire du parc informatique du lycée. J'ai voulu faire une interface administrateur pour l'administrateur réseaux, il peut ajouter du matériel, des logiciels et des salles à la base, ensuite faire correspondre mat/salle et mat/logi et visualiser l'ensemble des tables. L'utilisateur arriverais sur une page d'acceuil, il pourrait visualiser l'inventaire et faire une demande de maintenance sur un poste précis. J'ai déjà codé les pages, maintenant ce que j'ai imaginé, c'est avoir :
une page d'acceuil avec un menu de connexion classique MAIS le problème est que je voudrais un menu de connexion avec dedans deux redirections possible, si c'est le root qui se connecte il aille sur son site dédié (l'interface administrateur) et tous les autres utilisateurs sur l'autre interface.

Avec le code suivant :

        <FORM Method="POST" Action="<?php $_SERVER['PHP_SELF']; ?>">
        
<p><label for="login">Login : </label>
<input type="text" id="login" name="login"/></p>
<p><label for="password">Mot de passe : </label> 
<input type="password" id="password" name="password"/></p>
<input type="submit" name="go_login" id="go_login" value="Se connecter"/>


et le php suivant :

<?php
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
mysql_select_db('Inventaire_SaintEx',$connect) or die ("erreur de connexion base");
 
    function login() {
 
        // Si on a soumit le formulaire (si on a cliqué sur "Se connecter")
        if(isset($_POST['go_login'])) {
 
            // Si les deux champs ne sont pas vides
            if(!empty($_POST['login']) && !empty($_POST['password'])) {
 
                // On éxécute une requête pour détecter si le login entré existe dans la base
                $query = mysql_query("SELECT * FROM users WHERE login = '".$_POST['login']."'");
 
                // Si on a un résultat => il existe
                if(mysql_num_rows($query) == 1) {
                    $user = mysql_fetch_object($query);
 
                    // On vérifie la concordance des mots de passe (en md5)
                    if(md5($_POST['password']) == $user->password) {
 
                        // Si on arrive jusque ici c'est que le couple login / mot de passe est résolu
                        // On lance donc la session
 
                        session_start();
                           
                            header("location: /user/index.php" );

                           
 
                    } else {
                        echo 'Mauvais mot de passe pour cet utilisateur.';
                    }
 
                } else {
                    echo 'Ce login n\'existe pas dans notre base.';
                }
            } else {
                echo 'Vous devez remplir tous les champs !';
            }
        }
    }
 
?>


Je réussi à connecter les users qui correspondent à ceux que j'ai entré dans la BD mais j'aimerais une redirection autre si il detecte que c'est un type spécial d'administrateur, que quand il voit que le compte root c'est co, il le redirige vers une autre page que les autres.

Merci de prendre le temps de me répondre, et de me dire si ce que je veux est possible et comment je pourrais faire.


A voir également:

3 réponses

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
24 avril 2014 à 18:03
Bonjour,
Au niveau de cette ligne :
header("location: /user/index.php" );
Il te suffit de rajouter un if. Je ne sais pas comment ce nomme ton champ qui différencie un admin d'un utilisateur, alors pense à adapter le code :

if($user["isSuperAdmin"]){
  header("location: /user/index.php" );
}else{
  header("location: /user/index2.php" );
}


Par contre, ton code me paraît étrange, tu ne stock aucune données en session, comment vérifie-tu sur la page index.php que l'utilisateur est bien connecté ?
0
Ibilolz Messages postés 131 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 26 juin 2023
Modifié par Ibilolz le 24/04/2014 à 19:06
Avec ce code là, ça ne marche pas :/
arse error: syntax error, unexpected '==' (T_IS_EQUAL) in C:\wamp\www\Acceuil\functions.php on line 27

<?php
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
mysql_select_db('Inventaire_SaintEx',$connect) or die ("erreur de connexion base");
 
    function login() {
 
        // Si on a soumit le formulaire (si on a cliqué sur "Se connecter")
        if(isset($_POST['go_login'])) {
 
            // Si les deux champs ne sont pas vides
            if(!empty($_POST['login']) && !empty($_POST['password'])) {
 
                // On éxécute une requête pour détecter si le login entré existe dans la base
                $query = mysql_query("SELECT * FROM users WHERE login = '".$_POST['login']."'");
 
                // Si on a un résultat => il existe
                if(mysql_num_rows($query) == 1) {
                    $user = mysql_fetch_object($query);
 
                    // On vérifie la concordance des mots de passe (en md5)
                    if(md5($_POST['password']) == $user->password) {
 
                        // Si on arrive jusque ici c'est que le couple login / mot de passe est résolu
                        // On lance donc la session
 
                        session_start();
                           
                            if($user["root"]){
                              header("location: /Admin/index.php" );
                            }else{
                              header("location: /user/index.php" );
                              

                           
 
                    } else {
                        echo 'Mauvais mot de passe pour cet utilisateur.';
                    }
 
                } else {
                    echo 'Ce login n\'existe pas dans notre base.';
                }
            } else {
                echo 'Vous devez remplir tous les champs !';
            }
        }
    }
 
?>


Pour vérifier que l'utilisateur est connecté :

<?php
session_start();
// Si la variable de session n'existe pas
if(!isset($_SESSION['id'])) {
// On redirige l'utilisateur vers une page de login
header('Location: vaViteTeConnecter.php');
}

?>
0
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
24 avril 2014 à 20:51
1) Dans le code donné, tu ne rempli pas $_SESSION['id'], après tu le fait peut-être ailleurs, mais ça semble étrange que ce ne soit pas fait là.

2) Tu utilise $user un coup comme un objet, un coup comme un tableau, donc vérifie de ce côté là.

3) Les lignes n'étant pas les mêmes entre le code copier/coller et l'original, tu pourrais indiquer ce que tu a de la ligne 26 à 28, histoire d'avoir ce qui viens avant et après l'erreur
0