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 du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 95
    Points : 47
    Points
    47
    Par défaut Problème de session
    Bonjour tout le monde,

    Voila je suis entrain de faire un petit site en php mais je rencontre un petit problème. Je ne sais pas si c'est une erreur d'étourderie mais en tout cas je reste bloqué.
    Le problème est que :
    - le visiteur peut se connecter sous un profil grâce à un formulaire login , mot de passe.
    - ce login et mot de passe sont envoyés sur une page qui va rechercher sur la base de données s'ils existent bien etc.
    - Un fois acceptés le login est mis dans une variable de session $_SESSION['login']=$login;
    - et hop ça revient sur la page index.
    - Une fois sur cette page index(grâce a un isset) je vois bien que la variable $_SESSION['login'] a quelque chose à l'interieur et que cela correspond bien à ce que j'ai rentré.
    - cependant si je clic sur un lien (n'importe lequel mais celui index) je perds ma variable de session(le isset ne fonctionne plus le variable de session est vide).
    - Ce qui veut dire que la variable de session est présent et fonctionne sur index.php mais si je reclic sur index.php je perds la variable de session et cela sur toutes les pages.
    toutes mes pages ont session_start() au debut et n'ont pas de code html avant.

    Merci pour votre aide

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Donne un peu de code, pour voir.
    Sur quelle page affiches-tu ton formulaire ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 95
    Points : 47
    Points
    47
    Par défaut
    Voici le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <div class="bd_gauche_connex">
    	<form method="get" action="verif_inscript.php">
    		<fieldset>
    			<legend>Connexion</legend>
    			<label for="login">Login &#58; </label><input type="text" name="login" id="login" maxlength="12" style="width &#58; 75px;" />
    			<label for="password">Password &#58; </label><input type="password" name="password" id="password" maxlength="12" style="width &#58; 75px;" />
    			<input type="submit" value="ok" />
    			<a class="lit_menu" href="inscription.php">inscription</a>
    		</fieldset>
    	</form>
     
    </div>
    voici la vérification du login et la mise en session :
    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&#40;&#41;;
    	$login=$_GET&#91;'login'&#93;;
    	$pass=$_GET&#91;'password'&#93;;
    	include&#40;'Function/connexion.inc.php'&#41;;
    	$sql="SELECT * FROM UTILISATEUR  where Login='$login';";
    	$resultat=mysql_query&#40;$sql&#41;or die&#40;"erreur dans la requete &#58; " . $sql."<br/>".mysql_error&#40;&#41;&#41;;
    	if&#40;mysql_num_rows&#40;$resultat&#41;==0&#41;
    	&#123;
    		include&#40;'Function/message.inc.php'&#41;;
    		message&#40;'erreur','Ce login '.$login.' n\'existe pas','index.php'&#41;;
    	&#125;
    	else
    	&#123;
    		$sql2="SELECT PassW FROM UTILISATEUR WHERE Login='$login';";
    		$resultat2=mysql_query&#40;$sql2&#41; or die&#40;"erreur dans la requete &#58; " . $sql2."<br/>".mysql_error&#40;&#41;&#41;;
    		$data=mysql_fetch_assoc&#40;$resultat2&#41;;
    		$result_pass=$data&#91;'PassW'&#93;;
    		if&#40;strcasecmp&#40;$result_pass,$pass&#41;!=0&#41;
    		&#123;
    			include&#40;'Function/message.inc.php'&#41;;
    			message&#40;'erreur','Le mot de passe est incorrect','index.php'&#41;;
    		&#125;
    		else
    		&#123;
    			$sql3="SELECT id_Type FROM UTILISATEUR WHERE Login='$login';";
    			$resultat3=mysql_query&#40;$sql3&#41;or die&#40;"erreur de requete &#58; ".$sql3."<br/>".mysql_error&#40;&#41;&#41;;
    			$data2=mysql_fetch_assoc&#40;$resultat3&#41;;
    			$statut=$data2&#91;'id_Type'&#93;;
    			$_SESSION&#91;'statut'&#93;=$statut;
    			$_SESSION&#91;'login'&#93;=$login;
    			header&#40;"location&#58; index.php"&#41;;
    			exit&#40;&#41;;
    		&#125;
    	&#125;
    ?>
    voici ma page d'index :
    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
     
    <?php
    		session_start&#40;&#41;;
    		include&#40;'ModeliXe/ModeliXe.php'&#41;;
    		$page=new ModeliXe&#40;'base.mxt'&#41;;
    		$page->SetModeliXe&#40;&#41;;
    		if&#40;!isset&#40;$_SESSION&#91;'login'&#93;&#41;&#41;
    		&#123;
    			$page->Mxbloc&#40;'connexion',modify,'Template/connex.mxt'&#41;;
    		&#125;
    		else
    		&#123;
    			$page->Mxbloc&#40;'connexion',modify,'Template/connected.mxt'&#41;;
    			$page->MxText&#40;'connexion.login',$_SESSION&#91;'login'&#93;&#41;;
    			if&#40;$_SESSION&#91;'statut'&#93;==1&#41;
    			&#123;
    				$page->MxText&#40;'connexion.admin','<a class="lit_menu" href="administration.php">Administration</a>'&#41;;
    			&#125;
    		&#125;
    		$page->Mxbloc&#40;'milieu',modify,'Template/accueil.mxt'&#41;;
    		include&#40;'Function/connexion.inc.php'&#41;;
    		$sql=&#40;"SELECT id_Articl, Name_Articl, Date_Articl, Text_Articl,id FROM ARTICLE WHERE Position>=1 order by position DESC;"&#41;;
    		$resultat=mysql_query&#40;$sql&#41;or die&#40;"erreur dans la requete &#58; ".$sql."<br/>".mysql_error&#40;&#41;&#41;;
    		$nombre=mysql_num_rows&#40;$resultat&#41;;
    		if&#40;$nombre!=0&#41;
    		&#123;
    			while&#40;$data=mysql_fetch_array&#40;$resultat&#41;&#41;
    			&#123;
    				$page->MxText&#40;'milieu.article.titre',$data&#91;1&#93;&#41;;
    				$page->MxText&#40;'milieu.article.date',$data&#91;2&#93;&#41;;
    				$page->MxText&#40;'milieu.article.texte',$data&#91;3&#93;&#41;;
    				$sql2=&#40;"SELECT Login FROM UTILISATEUR WHERE id=$data&#91;4&#93;;"&#41;;
    				$resultat2=mysql_query&#40;$sql2&#41;or die&#40;"erreur dans la requete &#58; ".$sql2."<br/>".mysql_error&#40;&#41;&#41;;
    				$data2=mysql_fetch_assoc&#40;$resultat2&#41;;
    				$login=$data2&#91;'login'&#93;;
    				$page->MxText&#40;'milieu.article.auteur',$login&#41;;
    				$page->Mxbloc&#40;'milieu.article','loop'&#41;;
    			&#125;
    		&#125;
    		else
    		&#123;
    			$page->Mxbloc&#40;'milieu.article','delete'&#41;;
    		&#125;
    		$page -> MxWrite&#40;&#41;;
    ?>
    le formulaire est dans index.php, dans un template. Il se met s'il n'y a pas de variable de session.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Une question toute bête : les cookies sont-ils activés sur ton navigateur ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 95
    Points : 47
    Points
    47
    Par défaut
    J ai tester avec mozilla sur la machine faisant office de serveur et avec internet explorer sur une autre machine. Les cookies sont acceptés

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Au passage, tu fais 2 requêtes inutiles. Dans ton fichier verif_inscript.php, les 3 requêtes sont identiques. Il suffit que tu affectes le résultat de la 1ère à une variable, et tu économiseras 2 requêtes.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 95
    Points : 47
    Points
    47
    Par défaut
    oui exact

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 95
    Points : 47
    Points
    47
    Par défaut
    Personne n'a une petite idée ?
    Est ce que cela pourrait venir de mon serveur web ?
    Une petite chose que j'avais oublié de précisé, c'est que cela fonctionnait très bien et que ce problème est survenu d'un coup, je ne me rappel pas avoir fais une maj du serveur, ni unue modification importante dans mon code .

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Il faudrait que tu mettes en plusieurs endroits des :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r&#40;$_SESSION&#41;;
    pour voir à quel endroit la session perd ses valeurs. Ensuite, tu examineras de plus près cette portion de code.

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Une piste au passage : ton système de template n'utiliserait pas les sessions par hasard? Il pourrait y avoir concurrence avec lui.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 95
    Points : 47
    Points
    47
    Par défaut
    Donc voila
    index.php je ne suis pas connecté donc pas de session
    puis je me connecte mot de passe et login toujours dans index.php
    Verif du mot de passe par verif.php et insertion dans $_session, les variables sont bonnes
    je suis redirigé directement sur index.php ou les $_session sont encore bonnes.
    Je clic sur un lien n'importe lequel meme index.php et la je perds mes variables de session dès le debut juste apres session_start();.


    J'utilise modelixe comme système de template.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 32
    Points
    32
    Par défaut
    Bon je sais pas ...on rigole po de moi si je suis a l'ouest !

    mais il faut peut etre crée un dossier "sessions" à la racine de ton site.

  13. #13
    Membre actif

    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 264
    Points
    264
    Par défaut
    Citation Envoyé par Funraill.net
    Bon je sais pas ...on rigole po de moi si je suis a l'ouest !

    mais il faut peut etre crée un dossier "sessions" à la racine de ton site.
    Ca c'est valable chez Free uniquement.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 95
    Points : 47
    Points
    47
    Par défaut
    Le problème est que cela fonctionnait avant et je ne sais pas quelles modifications ont provoqué la perte de session.
    Cela peut du coté de mon serveur ou de mon code , peut etre du coté de modelixe.
    Mais je ne sais pas du tout.

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 sessions
    Par leodi dans le forum Langage
    Réponses: 5
    Dernier message: 02/12/2005, 21h13
  3. Problème de session
    Par kephy dans le forum Langage
    Réponses: 11
    Dernier message: 24/11/2005, 11h08
  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