IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

rediriger vers une page en php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 18
    Points : 20
    Points
    20
    Par défaut rediriger vers une page en php
    bonjour tout le monde, voilà, j'ai un probléme de redirection dans un de mes scripts, j'ai 3 espaces membre (1 pour l'admin, un chargé d'étude et un client), pour ça j'ai une table user(id_user, username, password, id_role) ici id_role est une clé étrangère pour reconnaitre le role de l'utilisateur qui se connecte, exemple, id_role=1 est un admin. id_role=2 est un chargé d'étude...

    bref, le problème c'est que je n'arrive pas à rediriger chaque personne qui se connecte vers son espace membre qui lui ai dédié.
    je vous joins index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
        <?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>

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    j'ai repris ton code en le commentant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <?php
     
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] === 'Connexion')
    {
        // empty inclus déjà le test isset()
        if (empty($_POST['login']) && empty($_POST['pass']))
        {
            $erreur = 'Au moins un des champs est vide.';
        }
        else
        {
            $base = mysql_connect ('localhost', 'root', '');
            mysql_select_db('nice', $base);
     
            // on teste si une entrée de la base contient ce couple login / pass
            /* SUFFIT D'EXTRAIRE DIRECTEMENT LE id_role rattaché au couple LOGIN ET PASSWORD
            $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);
            */
            $sql  = 'SELECT id_role FROM membre WHERE login="'.mysql_real_escape_string($_POST['login']).'" AND password="'.mysql_real_escape_string(md5($_POST['pass'])).'"';
            $qry  = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
            $data = mysql_fetch_array($qry);
     
            /* PAS BESOIN DE LIBERER LES RESSOURCES - PHP LE FAIT POUR TOI ET BIEN PLUS RAPIDEMENT
            mysql_free_result($req);
            mysql_free_result($req2);
            mysql_close();
            */
     
            if (empty($data))
            {
                $erreur = 'Compte non reconnu.';
            }
            else
            {
                $pages = array(
                    1 => 'administrateur.php',
                    2 => 'charge_etude.php',
                    3 => 'membre.php'
                );
     
                if (isset($pages[$data['id_role']]))
                {
                    session_start();
                    $_SESSION['login'] = $_POST['login'];
                    header("Location: {$pages[$data['id_role']]}");
                    exit;
                }
            }
        }
    }
    ?>
    <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>
    Le cas de figure "Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion." ne devrait jamais exister. Tu dois vérifier et empêcher ce genre de collision à l'enregistrement des membres et pas le découvrir à leur connexion. C'est une situation totalement ingérable.

  3. #3
    Membre actif Avatar de zaza576
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 175
    Points : 275
    Points
    275
    Par défaut
    Bonjour,

    tu peux aussi nous dire quelle est la nature de ton problème ? C'est bien de dire que ca marche pas mais si on a rien sous les yeux pour voir pourquoi tu ne rediriges pas, on ne peut pas t'aider !

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    son problème vient de ce bout de code : $role = mysql_fetch_object($req2);, ensuite il compare simplement un objet à un scalaire $role==2 ^^. Peut pas marcher.
    Aurait dû faire $role->id_role == 2.

    Il était préférable de reprendre son code afin de corriger plus que ce petit souci.

  5. #5
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Points : 172
    Points
    172
    Par défaut
    commencer à migrer sur mysqli ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    @AURELIEN, c'est vrai que ces requêtes deviennent obsolètes, mais ce n'est pas important pour le moment, de toute façons tout le monde utilisera PDO dans un future proche.

    @rawsrc, merci, maintenant la redirection fonctionne, j'ai fait plusieurs test avec des rôles différents et je suis toujours redirigé vers la bonne page merci encore fois.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] zone cliquable qui redirige vers une page grace a des instructions php/sql
    Par tiph02 dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 04/06/2008, 14h39
  2. Rediriger vers une page après sélection dans un select
    Par belzeluc dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 07/11/2006, 22h32
  3. Réponses: 8
    Dernier message: 24/07/2006, 12h26
  4. Réponses: 13
    Dernier message: 25/05/2006, 04h13
  5. [PHP-JS] PHP qui redirige vers une page
    Par jeanfrancois dans le forum Langage
    Réponses: 3
    Dernier message: 09/05/2006, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo