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 avec gestion de session


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Par défaut Problème avec gestion de session
    Bonjour,
    Je dois faire une authentification avec une session
    et ensuite gérer des utilisateur

    je fais de la manière suivante
    j'ai une page index.php qui contrôle si une session existe si oui alors elle affiche la page gestion ou je peux gérer mes utilisateurs Sinon elle affiche la page authentification
    voici le code de la page 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
     
    session_start();
    	<div id="header">
        	<?php
    			(isset($_SESSION['login'])) ? include_once("Pages/Gestion.php"): include_once("Pages/Authentification.php");
    		?>
        </div>
        <div id="contner">
        	<?php
    			if(isset($_SESSION['login'])){
    				include_once($tabVal[0]['Chemin']);
    			}
    		?>
        </div>
    voici le code de la page Authentification.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <div class="auth">
    	<form method="post" action="Pages/ValidationAuth.php">
            <p><label>Nom d'utilisateur:</label><input type="text" name="username" value="" /></p>
            <p><label>Mot de passe:</label><input type="password" name="password" value="" /></p>
            <p><input type="submit" name="valider" value="Valider" /></p>
            <p> <a href="#">Mot de passe oubli&eacute; </a></p>
        </form>
    </div>
    voici le de la page ou je fais le traitement de l'authentification avec une redirection meta refresh.
    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
     
    <?php
    session_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Refresh" content="5;URL=http://localhost/tir-reconvilier/Admin/index.php">
    <title>Document sans nom</title>
    	<link rel="stylesheet" type="text/css" href="../../Css/Undo.css" media="screen"/>
    	<link rel="stylesheet" type="text/css" href="../../Css/Admin.css" media="screen"/>
        <script type="text/javascript" src="../../Librairies/js/jQuery-1.5.2.js"></script>
        <script type="text/javascript" src=""></script>
    </head>
     
    <body>
    	<div class="titreRedirection">Redirection... Veuillez patientez</div>
        <div class="redirection">
        	<?php
    		include_once('../Include/file.inc.php');
    		if(isset($_POST['valider'])){
    			$userName=$_POST['username'];
    			$password=$_POST['password'];
    			$strUser = new Chaine($userName);
     
    			if(!$strUser->controleChaineAuth()){
    				exit("nom d'utilisateur n'est pas conforme");
    			}
    			$strPass = new Chaine($password);
    			if(!$strPass->controleChaineAuth()){
    				exit("nom d'utilisateur n'est pas conforme");
    			}
    			$pasword = $strPass->cryptChaine();
    			$pdo = Singleton::getInstance();
     
    			$requestSQL = "SELECT * FROM Authentifications WHERE UserName = ? AND Password = ?";
    			$objPDOStatement = $pdo->prepareRequest($requestSQL);
    			if($pdo->executeRequest($objPDOStatement, array($strUser->getChaine(),$strPass->getChaine()))){
    				if($pdo->getCountRow($objPDOStatement) == 1){
    					$tabVal = $pdo->getFetchAll($objPDOStatement);
    					$_SESSION['login'] = true;
    					$_SESSION['username'] = $tabVal[0]['UserName'];
    					echo "Merci de vous être authentifié ".$_SESSION['username']."<br />";
    					echo" Vous serrez rediriger sur la page d'administration";
    				}else{
    					echo"Erreur lors de l'authentification"."<br />";
    					echo"Veuillez recommencer l'authentification";
    				}
    			}else{
    				echo"Erreur lors de l'authentification"."<br />";
    				echo"Veuillez recommencer l'authentification";
    			}
    		}
    		?>
        </div>
    </body>
    </html>
    Jusque la tous vas bien j'ai bien ma session qui est créer avec comme variable session du nom de l'utilisateur.
    quand je rappelle ma page index la session est créer et donc sa affiche la page Gestion.php
    voici son code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <ul class="memuAdmin">
        <li><a href="index.php?pages=13">Gestion Utilisateur</a></li>
        <li><a href="index.php?pages=14">Gestion Evenement</a></li>
        <li><a href="index.php?pages=15">Gestion Photo</a></li>
    </ul>
    maintenant quand je clique sur Gestion Utilisateur sa vas afficher dans le contener de index.php GestUser.php
    voici son 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
     
    <div class="btnGestUser">
        <ul class="menuGestUser">
            <li><a href="index.php?pages=13&action=1">Ajouter un membre</a></li>
            <li><a href="index.php?pages=13&action=2">Liste des membres</a></li>
        </ul>
    </div>
    <div>
    <?php
    	switch ($action){
    		case 1:
    			$chemin = "Pages/AddUser.php";
    			break;
    		case 2;
    			$chemin = "Pages/ListUser.php";
    			break;
    		case 3;
    			$chemin = "Pages/ModifUser.php";
    			break;
    		default:
    			$chemin = "Pages/SelectChoseGestion.php";
    			break;
    	}
    	include_once($chemin);
    ?>
    </div>
    quand je clique sur ajouter un membre j'ai le formulaire d'ajout qui s'affiche dans le conteneur de gestUser.php
    voici le code de addUser.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
     
    <div class="addUser">
    	<fieldset>
        <legend>Ajout d'un membre</legend>
            <form method="post" action="Pages/ActionUser.php?action=1">
          <p><label>Nom:</label><input type="text" name="nom" value="<?php if(isset($_SESSION['nom'])){echo $_SESSION['nom'];} ?>" /></p>
                <p><label>Pr&eacute;nom:</label><input type="text" name="prenom" value="<?php if(isset($_SESSION['prenom'])){echo $_SESSION['prenom'];} ?>" /></p>
                <p><label>Email:</label><input type="text" name="email" value="<?php if(isset($_SESSION['email'])){echo $_SESSION['email'];} ?>" /></p>
               	<p><label>nom d'utilisateur:</label><input type="text" name="username" value="<?php if(isset($_SESSION['userName'])){echo $_SESSION['userName'];} ?>" /></p>
                <p><label>mot de passe:</label><input type="password" name="pass1" value="" /></p>
                <p><label>répeter mot de passe:</label><input type="password" name="pass2" value="" /></p>
                <p><input type="submit" name="valider" value="Valider" /></p>
            </form>
        </fieldset>
    </div>
    depuis ce fichier quand je clique sur valider sa me renvoi sur une page actionUser.php qui elle a une redirection meta refresh
    si le contrôle de se que l'utilisateur insère dans le formulaire joue alors pas de souci l'utilisateur vient enregistrer dans la base de donnée par contre si les test de contrôle trouve que un champs est pas conforme un message est inscrit et je retourne sur la page d'addUser et la je voudrais que les champs que l'utilisateur a insérer soient garder en mémoire c'est pourquoi dans le code de actionUser.php je créer pour chaque champs une variable session.
    voici le code de ActionUser.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
     
    <?php
    session_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Refresh" content="5;<?php echo"URL=http://localhost/tir-reconvilier/Admin/index.php?pages=13 & action=".$action." & id=".$id?>">
    <title>Document sans nom</title>
    	<link rel="stylesheet" type="text/css" href="../../Css/Undo.css" media="screen"/>
    	<link rel="stylesheet" type="text/css" href="../../Css/Admin.css" media="screen"/>
        <script type="text/javascript" src="../../Librairies/js/jQuery-1.5.2.js"></script>
        <script type="text/javascript" src=""></script>
    </head>
     
    <body>
    	<div class="titreRedirection">Redirection... Veuillez patientez</div>
        <div class="redirection">
    <?php
    	switch ($action){
    		case 1:
     
    				$strNom = new Chaine($_POST['nom']);
    				$strPrenom = new Chaine($_POST['prenom']);
    				$strEmail = new Chaine($_POST['email']);
    				$strUsername = new Chaine($_POST['username']);
     
    				$_SESSION['nom'] = $strNom->getChaine(); 
    				$_SESSION['prenom'] = $strPrenom->getChaine();
    				$_SESSION['email'] = $strEmail->getChaine();
    				$_SESSION['userameNewMembre'] = $strUsername->getChaine();
     
    				echo $_SESSION['nom'];
    				echo $_SESSION['prenom'];
    				echo $_SESSION['email'];
    				echo $_SESSION['userameNewMembre'];
    la j'ai pas mis tous le code juste se qui nous intéressent
    si je fais dans cette page un echo de mes variable de session elle s'affiche même celle créer durant authentification se qui est normal.
    quand le refresh est fais, et que je retourne sur mon formulaire addUser les variable de session existe mais elle son vide

    Je ne comprend pas pourquoi?

    Je vous remercie par avance pour toute l'aide que vous pourrai m'amener

    Di Blasio Michael

  2. #2
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    sur ton dernier script avant de créer tes variables de session test si elles existent, j'ai pas pu suivre tout le cheminement de tes pages mais commence par if !isset() sur chacune de tes variables de session parce qu’a mon avis tu les écrases à cette étape de ton code, pareil pour tes variable post :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    			if(isset($_POST['nom']) && !empty($_POST['nom'])) $strNom = new Chaine($_POST['nom']);
    				$strPrenom = new Chaine($_POST['prenom']);
    				$strEmail = new Chaine($_POST['email']);
    				$strUsername = new Chaine($_POST['username']);
     
    				if(!isset($_SESSION['nom']))$_SESSION['nom'] = $strNom->getChaine(); 
    				$_SESSION['prenom'] = $strPrenom->getChaine();
    				$_SESSION['email'] = $strEmail->getChaine();
    				$_SESSION['userameNewMembre'] = $strUsername->getChaine();
    et ça pour toute les variables

Discussions similaires

  1. problème de gestion de session avec sharepoint
    Par mohamedTU dans le forum Développement Sharepoint
    Réponses: 5
    Dernier message: 16/09/2011, 11h00
  2. Problème avec variables de session
    Par jorggy dans le forum Langage
    Réponses: 2
    Dernier message: 21/03/2007, 23h31
  3. Problème avec header et session
    Par byvan dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2006, 09h25
  4. Problème avec l'Objet "Session"
    Par ghislain007 dans le forum ASP
    Réponses: 4
    Dernier message: 03/03/2006, 22h07
  5. [xmlrad]problème avec la variable session
    Par ekmule dans le forum XMLRAD
    Réponses: 5
    Dernier message: 22/02/2006, 13h22

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