+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    novembre 2004
    Messages
    1 107
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 107
    Points : 475
    Points
    475

    Par défaut perte de session et rechargement de page

    Bonjour à tous,

    Quand je recharge ma page ou quand je change de page, je perds ma session.

    1) je me logue via un formulaire.
    2) grâce à l'AJAX, je vérifie que le pseudo et le mot de passe et bon.
    3) si tout est ok, redirection vers ma page principale (main.php)

    mes différents code :

    connexion.html

    Code :
    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
     
    <!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>Untitled Document</title>
    <link type="text/css" rel="stylesheet" href="/projet/css.css" />
    <SCRIPT LANGUAGE="Javascript" SRC="js/js.js"> </SCRIPT>
    <SCRIPT LANGUAGE="Javascript" SRC="js/connexion.js"> </SCRIPT>
    </head>
     
    <body>
     
    <div id="tout">
    <div id="banniere"><img src="images/ban_coeur.jpg" /></div>
    	<div id="int">
            <div id="gauche"><div id="date"></div>
            	<a href="connexion.html">CONNEXION</a> 
            	<a href="inscription.html">S'INSCRIRE</a>
            </div>
            <div id="droit">Pour vO_ous connecter, veuillez remplir les champs suivants<br />
            	<form method = "post" action="connexion.php" name="connexion" onsubmit="putain(); return false;">
                	<div id="mauvais"></div>
                	Votre pseudo<input type="text" name="pseudo"/><br />
                    Votre mot de passe<input type="password" name="mdp"/><br />
                    <input type="submit" />
                </form>
     
            </div>
        </div>
    </div>
     
    </body>
    </html>
    connexion.php

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    <?php
    session_start();
     header('Content-Type: text/html; charset=UTF-8');
    mysql_connect("sql.free.fr", "cc", "vv", "cc")
    or die("Impossible de se connecter : " . mysql_error());
    mysql_select_db("cc") or die("erreur de connexion a la base de donnees");
    $requete = "SELECT COUNT(*) AS nbr, id_users FROM users WHERE pseudo = '".$_POST['pseudo']."' AND mdp = '".$_POST['mdp']."'";
    $quer = mysql_query($requete) or die("requete non envoyée");
    $res = mysql_fetch_assoc($quer) or die("requete non reçue");
    if($res[nbr] == 1){
    	echo "ok"; 
    	$insert = "UPDATE users SET connexion='oui' WHERE id_users = '".$res['id_users']."'";
    	mysql_query($insert);
    	$_SESSION['pseudo'] = $_POST['pseudo'];
     
    }
    else { 
    	echo "non";
    }
    ?>
    code ajax (connexion.js) :

    Code :
    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
     
     
     
    function putain()
    {
     
     
     
        if(window.XMLHttpRequest){
        // Pour tous les navigateurs
            req = new XMLHttpRequest();
        }
        else{
        if(window.ActiveXObject){
          // Pour IE
              req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        }
     
    	pseudo=  document.connexion.pseudo.value;
     
     
    	mdp = document.connexion.mdp.value;
     
     
    	content_mdp = document.getElementById("mauvais");
     
    	req.open("POST","connexion.php", "true");
     
    	req.onreadystatechange = function()
      	{
     
          if (req.readyState == 4 && req.status==200)
          { 
     
    		if(req.responseText  == "non") {
    			content_mdp.innerHTML ="mauvais identifiants";
     
    			return false;
     
    		}
     
    		if(req.responseText  == "ok") {
    			document.location.href="main.php";
    		}
     
     
    	 }
     
    	}
    	 req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      	req.send('pseudo='+pseudo+'&mdp='+mdp);
     
    }
    main.php

    Code :
    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 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>Untitled Document</title>
    <link type="text/css" rel="stylesheet" href="/projet/css.css" />
    <SCRIPT LANGUAGE="Javascript" SRC="js/js.js"> </SCRIPT>
    <SCRIPT LANGUAGE="Javascript" SRC="js/les_connectes.js"> </SCRIPT>
    </head>
    <body>
    <div id="tout">
    <div id="banniere"><img src="images/ban_coeur.jpg" /></div>
    	<div id="int">
            <div id="gauche"><div id="date"></div>
     
            <?php if ($_SESSION['pseudo']){
             	echo "Bienvenue ". $_SESSION['pseudo']."<br>";
    			echo " <a href='deconnection.php'>DECONNECTION</a>";
    			}
    		else {
    		?>
     
            	<a href="connexion.html">CONNEXION</a>
            <? } ?>
            	<a href="inscription.html">S'INSCRIRE</a><br />
                <a href="preschezvous.php&pseudo=<?php echo $_SESSION['pseudo']; ?>">Les personnes près de chez vous ! </a>
     
                 <br /><div style="color:#003399";>Les connectés</div> <div id="connectes"></div>
            </div>
            <div id="droit">TEST 2</div>
        </div>
    </div>
     
    </body>
    </html>
    Dans mon main.php, je vois bien le pseudo, après connexion.
    Et donc, quand je recharge ma page ou que j'en change, ma session a disparu.

    Quelqu'un pourrait il m'aider?

    Merci

  2. #2
    Expert Confirmé Avatar de RunCodePhp
    Profil pro
    Inscrit en
    janvier 2010
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : janvier 2010
    Messages : 2 963
    Points : 3 910
    Points
    3 910

    Par défaut

    Salut

    En 1er tu devrais éviter de créer des pages comme connexion.html mais plutôt créer essentiellement des pages avec l'extension .php

    Aussi, au lieu d'utiliser comme nom et comme terme "connexion", il serait mieux d'utiliser "identification", c'est plus en phase avec la réalité.
    C'est pour ma part un abus de langage d'appeler ça connexion car cette notion n'y est pas.

    Du coup en utilisant ce terme connexion cela peu donner l'impression qu'il y a une connexion entre le serveur du site et le poste client (alors qu'il en est rien), et faire du code en dépit du bon sens.


    Mise à part cette petite parenthèse, vérifie du coté de ton navigateur le ou les cookie concernant ton domaine et les divers paramètres.
    Si une même session n'est pas conservée lors de la navigation, cela être lié à un des paramètres qui ne serait pas correcte, comme le chemin, le domaine (cookie.path, cokkie.domaine).
    Si rien n'est configuré à ce niveau, il est peut être nécessaire de le faire.
    Regarde du coté du php.ini (et de la doc de Php) les divers paramètres liés aux cookies/cookie de session.

    Par ailleurs, le fond du problème peut être lié au fait que la session soit à l'origine créée via de l'Ajax (donc en partie par du JS), et l'Ajax c'est particulier.

    Regarde du coté de la config session.cookie_httponly, par défaut elle vaut théoriquement FALSE.
    Fait un essai en la configurant à TRUE, juste pour voir.


    Puis pour vérifier plus simplement si la même session est conservée, il suffit d'afficher l'Identifiant de session avec session_id().
    Place le dans main.php par exemple.

    Tout les reste ne sert à rien pour tester comment réagit la session.
    Tout ton code dans le connexion par exemple ne sert à rien (pour tester j'entends), un simple session_start() théoriquement suffit (mise à part rajouter les divers config coté cookie/session qui seraient peut être nécessaire).
    Ce n'est que lorsque toute cette étape fonctionne comme prévu où là on peu commencer à rajouter toutes sorte de sur-couche de code plus ou liés aux sessions.


    NB : Attention aux sauts de lignes (même un espace) avant les session_start(), il ne doit surtout pas en avoir, ça peut créer ce genre de problème.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •