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 :

Problème de SESSION


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Problème de SESSION
    Bonjour

    Dans un précédent, j'avais un problème de formulaire sécurisée qui ne devait donner accés à une page caché qu'a 2 valeurs possible. Le problème fut résolué puisque l'une des 2 valeurs permettait donc l'accés à la page et pas autre chose.

    Ce que j'aurai souhaité c'est faire apparaître ensuite dans la page cachée LA valeur qui à permise l'accés... soit la valeur qui est dans $_SESSION.
    Or le problème c'est que dans la page cachée, même si j'y accède avec la deuxième valeure possible, le "echo" renvoi toujours la première valeure... et je ne comprends pas pourquoi.

    Je vous met ici mes codes pour être plus simple.
    Donc en fait il s'agit de 2 pages, la page login.php et privatepage.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
     
    <?php
    session_start();
    $val1="alain";
    $val2="roger";
    if (isset($_POST['bouton']))
    {
    		if ($_POST['code'] == $val1 OR $_POST['code'] == $val2) 
    		{
    		$_SESSION['code']=$val1 OR $_SESSION['code']=$val2;
    		header ("Location:privatepage.php");
    		}
     
    	else
    		{
    		$erreur="Le code n'est pas bon";
    		}
    }
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    </head>
     
    <body>
    <?php
    if(isset($erreur))
    	{
    	echo "<h3>".$erreur."</h3>";
    	}
    ?>
    <form id="monform" name="form1" method="post" action="login.php">
      <p>
        <label>Code :
          <input type="text" name="code"  />
        </label>
      </p>
      <p>
        <label>
          <input type="submit" name="bouton"  value="Envoyer" />
        </label>
      </p>
    </form>
    </body>
    </html>
    Et la page private.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
     
    <?php
    session_start();
    if(!isset($_SESSION['code']))
    	{
    	header("Location:login.php");
    	}
    else {
    	echo ($_SESSION['code']);
    	}
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    </head>
     
    <body>
    <h1> PRIVATE PAGE OF ME </h1>
     
     
    <?php
     
    unset($_SESSION['code']);
    ?>
    </form>
    </body>
    </html>
    Donc comme vous pouvez le voir dans le login.php, je peux accéder à ma page private soit par la valeure "alain", soit "roger".
    Le but étant ensuite de retrouver la valeure passée dans la page privée.
    Seulement voila.. Même quand j'y accède avec la valeure "roger"... le echo de la privateopage me renvoi "alain".

    Vous noterai également au passage que dans la privatepage... à la fin, je prend soin de supprimer la session... donc je ne comprends vraiment pas.

  2. #2
    Membre actif Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Points : 205
    Points
    205
    Par défaut
    Essayes de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($_POST['code'] == $val1 OR $_POST['code'] == $val2) 
    		{
    		$_SESSION['code']=$val1 OR $_SESSION['code']=$val2;
    		header ("Location:privatepage.php");
    		}
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($_POST['code'] == $val1 OR $_POST['code'] == $val2) 
    		{
    		$_SESSION['code'] = $_POST[ 'code' ];
    		header ("Location:privatepage.php");
    		}

  3. #3
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($_POST['code'] == $val1 OR $_POST['code'] == $val2) 
    {
    	$_SESSION['code']=$val1 OR $_SESSION['code']=$val2;
    	header ("Location:privatepage.php");
    }
    c'est censé faire quoi ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($_POST['code'] == $val1 OR $_POST['code'] == $val2) 
    {
    	$_SESSION['code'] = $_POST['code'];
    	header ("Location:privatepage.php");
    	die();
    }
    ??

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    YEAHHHH

    C'est typiquement une erreur de débutant non ?

  5. #5
    Membre actif Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Points : 205
    Points
    205
    Par défaut
    Et bien disons que je ne fais jamais ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['code']=$val1 OR $_SESSION['code']=$val2;
    et je doute d'ailleurs qu'il s'agisse d'une bonne pratique. Quand tu fais une assignation de variable, il faut éviter les choses hasardeuses (typiquement le OR dans notre exemple dont je ne connais pas du tout la repercussion).


    Si on voulait faire ceci en deux lignes (j'ai aps reussi avec une seule )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($_POST['code'] == $val1 OR $_POST['code'] == $val2) 
    {
    	$_SESSION['code'] = $_POST['code'];
    	header ("Location:privatepage.php");
    	die();
    }
    la bonne manière de procéder serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $plop = ( isset( $_POST['code'] ) ) ? ( ( $_POST[ 'code' ] == $val1 ) ? $val1 : ( $_POST[ 'code' ] == $val2 ) ? $val2 : null ) : null ;
    if ( $_POST[ 'code' ] !== null ) : header ("Location:privatepage.php"); exit(); endif;
    J'espère ne pas avoir fait de gaffe en l'écrivant, je n'ai pas testé

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Ouai mais la c'est tout de suite moins lisible et moins claire pour moi ... et pourquoi ce que j'ai écris serait une mauvais pratique ?
    J'aimerai savoir.
    MErci

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

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 10h54
  2. Problème de session
    Par kephy dans le forum Langage
    Réponses: 11
    Dernier message: 24/11/2005, 11h08
  3. Problème de session
    Par meda dans le forum Langage
    Réponses: 13
    Dernier message: 25/10/2005, 19h25
  4. problème de session en cours
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 15h36
  5. Gros problème de session/cookies
    Par valfredr dans le forum XMLRAD
    Réponses: 18
    Dernier message: 03/06/2004, 10h21

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