Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/04/2006, 14h02   #1
Membre du Club
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 52
Points : 52
Par défaut PHP problème de session

Bonjour,

Je viens de remarquer un problème avec mon site web. Je suis chez Free et j'utilise les session pour sauvegarder des informations sur les utilisateurs.

Chez moi en utilisant easyphp 1.8 tout fonctionne. Mais chez free il y a un problème. Je m'explique:

J'ai une page qui permet de s'authentifier (login + mdp). Lorsque l'utilisateur se connecte je fais une vérification par rapport à la base de données. Si l'utilisateur est bien enregistré je sauvegarde son login dans une variable de session.

De la automatiquement l'utilisateur est redirigé vers la page d'accueil qui écrit bienvenue "nomLogin". Jusque la tout fonctionne encore chez free.

Le problème survient maintenant, l'utilisateur souhaite voir les dernières news du site et clique sur le lien. Les news s'affichent mais je récupère un login totalement faux. En occurence, celui d'un autre utilisateur.

Je ne comprends pas du tout surtout que se login je ne le tape jamais alors si vous pouviez m'eclaircir!

A noter que dans chaque page ou j'utilise des variables de sessions, j'effectue un session_start(). Je récupère ma variable en faisant $_SESSION["login"];

Merci d'avance!
Pfeffer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h21   #2
Membre du Club
 
Inscription : avril 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 82
Points : 67
Points : 67
alors la il me fodrait un ptit bout de ton code pour pouvoir regarder de facon un peu plus clair...
chtichokoko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h24   #3
Membre confirmé
 
Inscription : août 2003
Messages : 225
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2003
Messages : 225
Points : 225
Points : 225
Envoyer un message via MSN à Steph82
as-tu créé ton répertoiren sessions chez Free ?
Steph82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h30   #4
Membre du Club
 
Inscription : avril 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 82
Points : 67
Points : 67
euh... ce que je trouve bizarre c'est que tu te retrouve avec un autre nom ... qe celui que t'as rentré.

Pour ma part tu dois effectuer dans ton code à un moment donné un petite bourde qui fait que tu récupère le mauvais nom mais la j'ais pas assez d'infos sur ce que tu as codé pour te renseigné je vois juste que deja tu sais utiliser une SESSION or ce que ej voudrais c'est plutot voir l'endroi ou tu as fais l'erreur
chtichokoko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h31   #5
Membre confirmé
 
Inscription : août 2003
Messages : 225
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2003
Messages : 225
Points : 225
Points : 225
Envoyer un message via MSN à Steph82
Ton test est faux, tu mets dans ta variable session quand l'utilisateru n'a rien entré.
Steph82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h31   #6
Membre du Club
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 52
Points : 52
Alors la c'est ce que j'ai dans mon script php une fois que l'utilisateur a valider le formulaire d'authentification.

Code :
1
2
3
4
5
6
7
8
9
10
11
 
//Ouverture de la session
session_start();     
 
// On interdit PHP d'afficher des messages d'erreur
error_reporting(0);
 
...Connexion a la BD et vérification
 
 //Sauvegarde du login dans la variable de session
$_SESSION["login"]  = $_POST["login"];
ça c'est ce que j'ai lorsque l'authentification a fonctionné:

Code :
1
2
3
4
5
6
7
8
9
 
//Ouverture de la session
session_start();
 
$login = $_SESSION["login"];
 
echo "<p>
Bienvenue $login <br />
</p>
et ça c'est ce que j'ai sur la page qui pose problème:
Code :
1
2
3
4
5
 
<?
session_start();
 
echo $_SESSION["login"];
Ici je me retrouve avec un mauvais login, celui d'un autre utilisateur.
Pfeffer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h33   #7
Membre du Club
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 52
Points : 52
J'ai bin créer mon dossier sessions chez free!
Pfeffer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h37   #8
Membre du Club
 
Inscription : avril 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 82
Points : 67
Points : 67
teste l'existence de tes $_POST avec

Code :
if(!empty($_POST['nom'])){
Parce que j'ai un doute sur ce que tu obtien et fais afficher ta variable $_POST ...
chtichokoko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h39   #9
Membre confirmé
 
Inscription : août 2003
Messages : 225
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2003
Messages : 225
Points : 225
Points : 225
Envoyer un message via MSN à Steph82
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Ouverture de la session
session_start();     
 
// On interdit PHP d'afficher des messages d'erreur
error_reporting(0);
 
// Verification du formulaire
if($_POST["login"] != null && $_POST["mdp"] != null)
{       
        ...Connexion a la BD et vérification
 
       //Sauvegarde du login dans la variable de session
unset($_SESSION["login"]);
$_SESSION["login"]  = $_POST["login"];
}
Steph82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h40   #10
Membre du Club
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 52
Points : 52
Je viens de faire un test sur le post de login! C'est bon le login est bien réceptionné avant le test d'authentification.
Pfeffer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h41   #11
Membre du Club
 
Inscription : avril 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 82
Points : 67
Points : 67
ou alors :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Ouverture de la session
session_start();     
 
// On interdit PHP d'afficher des messages d'erreur
error_reporting(0);
 
// Verification du formulaire
if( !empty($_POST["login"]) && !empty($_POST["mdp"]) )
{       
        ...Connexion a la BD et vérification
 
       //Sauvegarde du login dans la variable de session
unset($_SESSION["login"]);
$_SESSION["login"]  = $_POST["login"];
}
[/quote]
chtichokoko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h43   #12
Membre du Club
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 52
Points : 52
Question:

A la fin de mon authentification je fais une redirection vers la page bienvenue monsieur... en faisant:

Code :
1
2
 
header("Location: <a href="http://anthony.pfeffer.free.fr/index.php" target="_blank">http://anthony.pfeffer.free.fr/index.php</a>");
Est ce que le header ne me perd pas ma session?
Pfeffer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h45   #13
Membre du Club
 
Inscription : avril 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 82
Points : 67
Points : 67
normalement non sauf si tu utilise un unset de session quelques part dans ton code et comme je vois que c'est vers ton index que renvoit ton header je me dis qu'il dois y en avoir un dans le coin
chtichokoko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h46   #14
Membre confirmé
 
Inscription : août 2003
Messages : 225
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2003
Messages : 225
Points : 225
Points : 225
Envoyer un message via MSN à Steph82
Enleves ton header et fait un echo de ta session juste en dessous de l'unset et de l'initialisation de la session. Tu verras theoriqueemnt le bon utilisateur.
Si avec le header ca plante, ta session doit être écrasé entre ces 2 codes.
Steph82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h46   #15
Membre du Club
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 52
Points : 52
je viens d'essayer avec le unset mais sans succès! Auparavant je n'ai jamais utilisé unset!
Pfeffer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h48   #16
Membre confirmé
 
Inscription : août 2003
Messages : 225
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2003
Messages : 225
Points : 225
Points : 225
Envoyer un message via MSN à Steph82
Citation:
Envoyé par Pfeffer
je viens d'essayer avec le unset mais sans succès! Auparavant je n'ai jamais utilisé unset!
Ben tu as peut etre un autre $_SESSION['login'] = ... incrusté, ce qui expliquerait ton écrasement de variable.
Steph82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h53   #17
Membre du Club
 
Inscription : avril 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 82
Points : 67
Points : 67
affiche ton index pour que j'y hete un coup d'oeil...
chtichokoko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 14h59   #18
Membre du Club
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 52
Points : 52
j'ai enlevé le header! Une fois l'authentiication effectuée j'ai bien la bonne valeur dans ma variable!

Donc ma session doit être écrasée! Mais comment est ce possible ?
Pfeffer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 15h00   #19
Membre confirmé
 
Inscription : août 2003
Messages : 225
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2003
Messages : 225
Points : 225
Points : 225
Envoyer un message via MSN à Steph82
Citation:
Envoyé par Pfeffer
j'ai enlevé le header! Une fois l'authentiication effectuée j'ai bien la bonne valeur dans ma variable!

Donc ma session doit être écrasée! Mais comment est ce possible ?
Ben tu dois avoir forcémment un code qui l'écrase quelquepart. Envoie nous le code qu'il y a entre.
Steph82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 15h01   #20
Membre du Club
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 52
Points : 52
Voivi mon index.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
 
<?php
session_start();
 
if(isset($_GET["newContent"]))
{
 //utilisateur souhaitant afficher une information
 //qu'il soit connecté ou non. 
 $content = $_GET["newContent"];  
}else $content = "Content/News/news1.php";
 
if(isset($_SESSION["connect"]) && !isset($_GET["newContent"])) 
{
 switch($_SESSION["connect"])
 {
 //utilisateur ayant fait une erreur de saisie de mdp ou de login
 case "0": $content = "Content/Text/connectionDeny.php";         
          break;
 //utilisateur connecté
 case "1": $content = "Content/Text/connectionSuccessfull.php";
             break;
 //Problème de connexion 
 default: $content = "Content/Text/connectionProblem.php";
       break;
 } 
}
?>
après c'es du code html basique avec inclusion de module php mais qui n'utilise en rien les variables de sessions.
Pfeffer est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h10.


 
 
 
 
Partenaires

Hébergement Web