Gros probleme de session (RESOLU) MERCI à tous !!!

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Gros probleme de session (RESOLU) MERCI à tous !!!

Message le Mar Oct 07, 2008 13:31

Salut à tous,

J'ai un problème très casse tête. Tout d'abord sachez que je n'ai pas le problème que je vais vous expliquez en local.

Je me log avec login et mdp sur le site. Au dessus de ma page,je vois que je suis connecté (mon lgin est affiché). Mais dès que je clique sur un des liens de mon menu, le user change. Je vois donc au dessus de la page que je suis non plus connecté sous "John" mais sous "Ju". J'ai affiché l'id de session en faisant echo session_id(); Et ce qui est bizarre c'est que l'id, lui, ne change pas !

Je n'y comprends rien. Je suppose que ça doit être du au serveur mais je suis pas sur. Que faire ??

D'avance merci à tous les courageux qui veulent bien m'aider.
Dernière édition par hx.jonathan le Mer Oct 08, 2008 16:31, édité 4 fois.


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Mar Oct 07, 2008 14:25

Tu te logues sur quoi? L'id ne change pas, par rapport à quoi?
...

Dis en plus car là c'est flou. Mais j'opte quand même pour une erreur de code.

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Mar Oct 07, 2008 14:31

Salut,

Je me log sur le site à l'aide d'un formaulaire html. J'entre login et mot de passe.

Pour ce qui est de l'id, je me disais que si mon user change, l'id de session aussi, non ?

En fait, à la base je n'utilise pas la fonction session-id(). Je met juste session_start(); en début de chaque page.


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Mar Oct 07, 2008 16:14

Ton ID de session est lié à la session PHP. Te logguer sur un site, un forum, ... ne change pas l'ID de ta session (vu que c'est complètement différent).

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Mar Oct 07, 2008 16:16

ok mais donc comment cela se fait-il que le serveur ai gardé l'utilisateur en mémoire alors que je l'ai supprimmé de la base de données.

Je suis clair ou pas du tout ?

Merci


Bool
WRInaute accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

Message le Mar Oct 07, 2008 17:01

Hello,

es tu certain que tes sessions soit régulièrement effacées ? La probabilité est mince, mais si tu tombes sur un ID de session utilisé il y a 4 mois et qu'il n'a jamais été effacé ça reste possible.

Mais cela voudrait également dire que tu ne fais strictement aucune vérification dans ton code, ce qui n'est pas prudent...

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Mar Oct 07, 2008 17:47

Salut ,

merci de ta réponse.

Que veux-tu dire par effacer les sessions ? Que devrais-je faire ??

Voivi en clair mon problème si je n'ai pas été assez clair désolé.

Je vais sur mon site : login et mdp. Je valide. Dans un endroit de ma page j'ai demandé à ce qu'il m'affiche le login s'il existe, sinon il marque connexion.

Donc quand je me connecte (mon login est jhon) je vois bien :

John|Déconnexion Id session : r06tm37rkuj4f5sv06u0b6p095

Mais dès que je clique sur le moindre lien hypertexte: voici ce qu'il m'affiche :

Ju|Déconnexion Id session : r06tm37rkuj4f5sv06u0b6p095

Il a donc changé d'utilidateur sans que je ne demande rien.
J'ai beau me connecter avec le user que je veux, dès que je clique sur un lien, il switch vers "Ju".

Et d'ailleurs, d'où mémorise-t-il ces informations. J'ai pourtant supprimmé le user "Ju"dans la BDD pour être sur.

Une idée.

Merci bcp.

John :D

bozoleclown
WRInaute passionné
WRInaute passionné
 
Messages: 893
Inscription: Jeu Nov 24, 2005 19:08

Message le Mar Oct 07, 2008 21:54

Juste après t'être connecté en "john"

tu compares l'id de session qui est inscrit dans la page
et l'id de session contenu dans le cookie
(sous firefox tu peux voir le contenu du cookie)

s'ils sont différents, ton session_start n'arrive pas à écrire le cookie qui va bien

et sinon selon php.net
Note: Si vous utilisez des sessions basées sur les cookies, vous devez appeler session_start() avant d'afficher quoi que ce soit au navigateur.


voila une piste si tu utilises les cookies pour passer l'identifiant de session

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Mar Oct 07, 2008 23:54

Salut,

Merci de ta réponse.

Les deux id de session sont les mêmes.

Et j'ai des session start() sur toutes les pages avant d'afficher quoi que ce soit au navigateur.

Une autre idée. Je sais que le problème est difficile.

Merci à tous.

John


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Mer Oct 08, 2008 8:23

Bah sans voir ton code de connexion difficile de répondre. Soit tu affiches un nom qui est en cookie et qui n'est pas effacé (supprime les cookies de ton navigateur pour tester) soit ton code a un gros bug.


nickargall
WRInaute accro
WRInaute accro
 
Messages: 5329
Inscription: Lun Juin 13, 2005 14:13

Message le Mer Oct 08, 2008 9:09

Bonjour
Ca m'est arrivé également lors du dev de mon www.
Ce qui se passait chez moi :

. ma variable de session était $_SESSION['id_user']=11, par exemple

. dans certaines pages traitant d'un autre membre, je définissais ue variable $id_user=18, par exemple

. chose étrange, ma variable de session $_SESSION['id_user'] prenait alors la valeur de $id_user lorsque je visitais la dite page.

Je me trimbalais donc avec un identifiant en session qui ne correspondait plus à mon propre compte.

Ce que j'ai fait : j'ai évité d'utiliser la variable $id_user, j'ai utilisé $id_user2 et hop plus de problèmes.

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Mer Oct 08, 2008 11:58

MA PAGE DE CONNEXION

Code: Tout sélectionner
<?php

include_once 'fonctions.php';

if (isset($_SESSION['username'])){

include "redir_logok.php";
exit();
}
else{
?>
<!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" xml:lang="fr" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
</head>

<body>

<!---------------------------------------------------------------------------------------------------------->
<h1>Formulaire de connexion</h1>
<form  action="index.php?page=5555" method="post">

<table border="0">

<tr>
<td><label>Nom d'utilisateur :</label></td>
<td><input type="text" name="Username" MAXLENGTH="20"></td>

</tr>

<tr>
<td><label>Mot de passe :</label></td>
<td><input type="password" name="Password" MAXLENGTH="20"></td>

</tr>

</table>

<br/>
<br/><br/>
<input type="submit" value="Valider" size="20">
</form><br/><br/>

<!------------------------FIN PHP------------------------------->
<?php } ?>

</body>

</html>


MA PAGE DE VERIFICATION

Code: Tout sélectionner
<?php
session_start();
include_once 'fonctions.php';


    $Username = htmlentities($_POST['Username'], ENT_QUOTES);
    $Password = htmlentities($_POST['Password'], ENT_QUOTES);
    $Password_md5 = md5($Password);
   
   connexion_DB('amispher_main');
   
   $reqlog = mysql_query("SELECT * FROM personne WHERE Username='$Username' AND Password='$Password_md5'")or die(mysql_error());
   $log=mysql_num_rows($reqlog);//on compte le nombre de ligne et ON met ce nombre dans la VARIABLE $log
   $info_user=mysql_fetch_array($reqlog);

 
   if ($log==1){
$_SESSION['Username'] = $info_user['Username'];
$_SESSION['Nom']=$info_user['Nom'];
$_SESSION['Prenom']=$info_user['Prenom'];

require "redir_logok.php";
}
elseif ($log==0)
{
echo"</br><span class='Texte_04'>Login ou mot de passe incorrect !!</span>";
session_destroy();
require "connexion.php";
}
deconnexion_DB();




?>


Ah oui, autre infos qui peut etre utile, quand je fais :
Code: Tout sélectionner
print_r($_SESSION) ;


J'ai ceci :
Code: Tout sélectionner
Array
(
    [Username] => Ju
    [Nom] => Housieaux
    [Prenom] => Jonathan
)


Le Usernale ne correspond pas aux champs Nom et prénom dans ma BDD. Le Username devrait être John


Encore merci à tous pour votre aide


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5220
Inscription: Mer Nov 23, 2005 10:38

Message le Mer Oct 08, 2008 12:08

nickargall a écrit:Bonjour
Ca m'est arrivé également lors du dev de mon www.
Ce qui se passait chez moi :

. ma variable de session était $_SESSION['id_user']=11, par exemple

. dans certaines pages traitant d'un autre membre, je définissais ue variable $id_user=18, par exemple

. chose étrange, ma variable de session $_SESSION['id_user'] prenait alors la valeur de $id_user lorsque je visitais la dite page.

Je me trimbalais donc avec un identifiant en session qui ne correspondait plus à mon propre compte.

Ce que j'ai fait : j'ai évité d'utiliser la variable $id_user, j'ai utilisé $id_user2 et hop plus de problèmes.


Ce qui est selon moi dû au fait que sur ton serveur de dev, tu es en register globals on.


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Mer Oct 08, 2008 12:09

nickargall>Ton soucis c'est que tu as l'option PHP (dont j'ai oublié le nom) qui fait en sorte que les variable globale soit accessible par $id_user, donc en gros $_GET['id_user'] et les autres (SESSION, POST, ...).

Et je pense que hx.jonathan devrait regarder de ce coté.

Et aussi faire attention car $_SESSION['username'] et $_SESSION['Username'] c'est pas la même variable.

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Mer Oct 08, 2008 12:14

OK je check tout ça, ke vous dis quoi. En espérant que ce soit bon.

A tout de suite
:D

Gros probleme de session (RESOLU) MERCI à tous !!!

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités