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

Langage PHP Discussion :

Session comment rediriger vers une page protégée après identification


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut Session comment rediriger vers une page protégée après identification
    Bonjour à tous,
    Je débute en php et en programmation et j'ai besoin de votre aide... si ca ne vous embete pas evidemment. Bon voila mon probleme:

    Certaines pages de mon site nécessitent d'être loggé pour y accéder. Je pense avoir réussi à créer une page de login (voir code ci-dessous) seulement une fois identifié je n'arrive pas à rediriger l'utilisateur vers la page à laquelle il essayait d'accéder avant son identification. Si l'utilisateur veut accéder à la page mon_compte.php par exemple et qu'il n'est pas loggé je le renvoie sur la page login.php et ensuite je voudrais le rediriger directement sur mon_compte.php. Si c'est la page poster_message.php qui est protégée je veux pouvoir le rediriger vers celle ci apres identification. Donc en fait je veux pouvoir récuperer la page d'ou vient l'utilisateur pour ensuite le rediriger vers cette page. J'espere que je suis asser clair.

    Voici le code de ma page login.php et le code que j'ai ajoute sur mon_compte.php.

    Login.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
     
    <? include("_connexion.php"); 
    if(isset($_POST) && !empty($_POST['username']) && !empty($_POST['password'])) {
      extract($_POST);
      $sql = "select password from members where username='".$username."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
      $data = mysql_fetch_assoc($req);
      $url=$_SERVER['REQUEST_URI'];
      if($data['password'] != $password)
      {
        header("Location: login.php");
    	echo "<h5>Mauvais pseudo ou mot de passe. Merci de recommencer</h5>";
    	exit;
      }
      else {
        session_start();
        $_SESSION['username'] = $username;  
        header("Location: $url");
    }   
    }
    mysql_close(); ?>
     
     <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" type="text/css" href="mystyle.css" />
    <title>Login : ouvir une session</title>
    </head>
     
    <body>
    <table align="left" cellpadding="0" cellspacing="0" border="0" width="900">
    <tr>
    <td colspan="2">
    <a href="default.php"><img src="img/logo.gif" align="absmiddle" border="0"></a>
    </td>
    </tr>
     
    <tr>
    <td colspan="2">
    <h1>Ouvrir une session</h1>
    </td>
    </tr>
     
    <tr>
    <td colspan="2">
    <h3>Entrez votre pseudo et votre mot de passe</h3>
    </td>
    </tr>
     
    <tr>
    <td width="50%" valign="top">
     
    <table align="center" cellpadding="0" cellspacing="10" border="0" width="100%" >
    <tr>
    <td id="yellowtd">
    <h2>Vous êtes déjà membre ?</h2>
    <p>Entrez votre pseudo et votre mot de passe pour ouvrir une session. </p>
    <form action="login.php" method='post'"> 
    <table align="center" border="0">
      <tr>
        <td><p>Pseudo</p></td>
        <td><input type="text" name="username" maxlength="20"></td>
      </tr>
      <tr>
        <td><p>Mot de passe</p></td>
        <td><input type="password" name="password" maxlength="20"></td>
      </tr>
      <tr>
        <td colspan="2" align="center"><input type="submit" value="Ouvrir une session"><br />
    	<a href="pseudo_oublie.php">Mot de passe ou pseudo oublié ?</a></td>
      </tr>
    </table>
    </form>
    mon_compte.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?
    session_start();
    if(!isset($_SESSION['username']))
    {
    	header("Location: login.php");
    	exit;
    }
    ?>

    Merci d'avance

    dolf13

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Tu peux utiliser le referer.
    Quand tu arrives sur ta page de login, tu sais d'ou tu proviens grace au refrer.
    Tu le mets en session.
    Une fois la personne enregistree, tu renvoi vers le referer que tu as stocke.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par stunti
    Tu peux utiliser le referer.
    Quand tu arrives sur ta page de login, tu sais d'ou tu proviens grace au refrer.
    Tu le mets en session.
    Une fois la personne enregistree, tu renvoi vers le referer que tu as stocke.
    Merci. T'aurais un exemple de code ou une tutoriel à me donner?

  4. #4
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 145
    Points : 91
    Points
    91
    Par défaut
    tu utilises la variable $_SERVER['HTTP_REFERER'] qui contient l'url de la page depuis laquelle l'utilisateur à accéder à la page en cours.

    tu fais un truc du genre :
    $pageprecedente=$_SERVER['HTTP_REFERER'];
    header('Location:$pageprecedente');

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    Ok Yanice je vais essayer merci.

  6. #6
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    attention :le referer est passé par le navigateur, il vient donc du client et ne peut en AUCUN CAS etre quelque chose de confiance ...

    ex : avec FF, je peux définir le referer que je veux ou meme l'effacer, le bloquer ...

    a toi de verifier qu'il ne risque pas d' avoir un trou de sécu en passant un referer correspondant a une page de ton site ayant un niveau d'autorisation supérieur.

  7. #7
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    +1 Lorenzo

    Ne jamais faire confiance à ce qui passe entre les mains du client !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    Ca se complique!!!! Je n'ai qu'un seul niveau d'autorisation (pages accessibles par TOUS ou pas accessibles uniquement par les membres).... que me conseille tu de faire dans ce cas?
    Merci d'avance

  9. #9
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    si tu n'as qu'un niveau et une verif sur chaqu'une des pages alors tu ne risques rien a utiliser un "mauvais referer" !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    ok je vais essayer

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    Voila j'ai essaye mais j'ai du faire une erreur quelque part mais je vois pas ou. Ca commence serieusement a me gonfler

    Voici le code de ma page login.php alors si ca vous dit de m'aider n'hesitez surtout pas. Merci d'avance

    Quand je vais sur la page login et que je me connecte avec un utilisateur ca ne me redirige pas sur la page precedente, je reste sur la page login.php et l'utilisateur est bien connecte.

    Bon voila le code

    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
     
    <? include("_connexion.php"); 
      if(isset($_SERVER['HTTP_REFERER']) && (($_POST) && !empty($_POST['username']) && !empty($_POST['password']))) {
      extract($_POST);
      $sql = "select password from members where username='".$username."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
      $data = mysql_fetch_assoc($req);
      $pageprecedente=$_SERVER['HTTP_REFERER'];
      if($data['password'] != $password)
      {
        header("Location: login.php");
    	echo "<h5>Mauvais pseudo ou mot de passe. Merci de recommencer</h5>";
    	exit;
      }
      else {
        session_start();
        $_SESSION['username'] = $username; 
    	$_SESSION['pageprecedente'] = $_SERVER['HTTP_REFERER'];
        header("Location:$pageprecedente");
    }   
    }
    mysql_close(); ?>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" type="text/css" href="mystyle.css" />
    <title>Login : ouvir une session</title>
    </head>
     
    <body>
    <table align="left" cellpadding="0" cellspacing="0" border="0" width="900">
    <tr>
    <td colspan="2">
    <a href="default.php"><img src="img/logo.gif" align="absmiddle" border="0"></a>
    </td>
    </tr>
     
    <tr>
    <td colspan="2">
    <h1>Ouvrir une session</h1>
    </td>
    </tr>
     
    <tr>
    <td colspan="2">
    <h3>Entrez votre pseudo et votre mot de passe</h3>
    </td>
    </tr>
     
    <tr>
    <td width="50%" valign="top">
     
    <table align="center" cellpadding="0" cellspacing="10" border="0" width="100%" >
    <tr>
    <td id="yellowtd">
    <h2>Vous êtes déjà membre ?</h2>
    <p>Entrez votre pseudo et votre mot de passe pour ouvrir une session. </p>
    <form action="login.php" method='post'"> 
    <table align="center" border="0">
      <tr>
        <td><p>Pseudo</p></td>
        <td><input type="text" name="username" maxlength="20"></td>
      </tr>
      <tr>
        <td><p>Mot de passe</p></td>
        <td><input type="password" name="password" maxlength="20"></td>
      </tr>
      <tr>
        <td colspan="2" align="center"><input type="submit" value="Ouvrir une session"><br />
    	<a href="pseudo_oublie.php">Mot de passe ou pseudo oublié ?</a></td>
      </tr>
    </table>
    </form>

  12. #12
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    fait un echo sur la valeur de $pageprecedente et tu verras tout de suite ou est le probleme.

    autre chose, quand tu definis un header+location, il doit y avoir un espace apres les :
    ex :
    header("Location: $pageprecedente");

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Points : 60
    Points
    60
    Par défaut
    j'ai ajoute un echo $pageprecedente et ca me donne l'url de la page login.php et pas de la page précedente. J'ai une erreur quelque part mais je vois pas ou. Merci bien pour ta precieuse aide.

    dolf13

  14. #14
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    alors fait un echo du referer sur la page login ...

    tu dois sauvegarder le referer au moment ou le client arrive sur la 1ere page de ton site, pas aprés l'avoir redirigé sur la page login

Discussions similaires

  1. comment rediriger vers une page d'erreur
    Par flamant dans le forum Spring
    Réponses: 3
    Dernier message: 20/07/2012, 11h27
  2. Impossible de rediriger vers une page après un délai
    Par Gouyon dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/11/2008, 09h24
  3. Rediriger vers une page de login quand timeout de session
    Par Tail dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 18/09/2008, 12h43
  4. 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
  5. Réponses: 8
    Dernier message: 24/07/2006, 12h26

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