Problème bizarre de perte partielle de session

Eléphanteau du PHP | 46 Messages

13 déc. 2005, 12:14

Voilà, je suis face à un problème étrange.
Je réalise un site avec gestion de session offline avec EasyPHP et je viens de l'uploader sur un espace perso Free pour test online.
Surprise : ma session saute à tout bout de champs. Ce site comprend de nombreux formulaires (méthode POST pour la récup des paramètres) et lorsque je clique sur un bouton, la session saute.
J'ai fais un print de tous mes paramètres, et seul certains paramètres de sessions sont impactés (alors que je ne les rentre qu'une fois).

Voici la structure de mon fichier index :

Code : Tout sélectionner

<?php include('include/header.php'); ?> <HTML> <BODY > if(!isset($_SESSION['uid'])) { $uid_online = 0; } else { $uid_online = $_SESSION['uid']; } if(!isset($_SESSION['nom_complet'])) { $nom_online = 0; } else { $nom_online = $_SESSION['nom_complet']; } if(!isset($_SESSION['admin'])) { $admin_online = 0; } else { $admin_online = $_SESSION['admin']; } if(!isset($_SESSION['login'])) { $login_online = 0; } else { $login_online = $_SESSION['login']; } AFFICHAGE DE LA PAGE </BODY> </HTML>
Le header contient le traitement de la session :

Code : Tout sélectionner

<?php if( ( (isset($_POST['identifier'])) && ($_POST['identifier'] == "Entrer") ) && (!isset($_SESSION['login'])) ) // REVU & SECURISE { $reponse = ""; $host = "localhost"; $base = "sbarbay"; $passe = "e6n77siw"; $identification = @mysql_connect($host,$base,$passe); @mysql_selectdb($base); if($identification) { if(isset($_POST) && !empty($_POST['login1']) && !empty($_POST['pwd1'])) { $sql = 'select * from iseries_user where login="'.$_POST['login1'].'"'; $reponse = mysql_query($sql) or die('<DIV CLASS="box-alerte">Erreur SQL !<br>'.mysql_error().'</DIV>'); $data = mysql_fetch_assoc($reponse); if($data['pwd'] <> $_POST['pwd1']) { header("Location:index.php?rub=home&page=login&badlogin"); exit; } else { session_start(); $_SESSION['login'] = $_POST['login1']; $_SESSION['uid'] = $data['uid']; $_SESSION['admin'] = $data['admin']; $_SESSION['nom_complet'] = $data['prenom'].' '.$data['nom']; header("Location:index.php?rub=home&page=login&loginok"); exit; } } else { header("Location:index.php?rub=home&page=login&oubli"); exit; } } else { print('<DIV CLASS="box-alerte">Erreur de connexion à la base de données...</DIV>'); } } else { session_start(); if( isset($_GET['session']) && ($_GET['session'] == 'fin') ) { session_destroy(); header("Location:index.php"); exit; } } ?>
La page login, en fonction du paramètre GET qu'elle récupère, gère l'affichage d'un formulaire d'identification ou l'affichage de message.
Index.php affiche un petit message de bienvenue et mes menus dès que le paramètre uid_online existe.

Jusque là, pas de soucis offline mais l'application online plante dès l'appui sur un bouton d'un formulaire. Les paramètres uid_online, admin_online, login_online change (mais pas nom_online !).

Une idée ?
Ca viendrait du paramétrage Free ? D'une fonctionnalité que j'exploite mal (ce qui est très possible) ?

Merci d'avance

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

13 déc. 2005, 12:17

Free a une manière particulière de gérer les sessions.

http://faq.free.fr/?q=933

Eléphanteau du PHP | 46 Messages

13 déc. 2005, 12:19

J'ai fais des tests (oui oui, en même temps que je postais le message précédent, d'où la proximité des posts).
En fait la session ne saute pas, c'est le dernier utilisateur de la base de donnée qui prend le contrôle de la session, ou plus précisément, qui devient l'uid_online.
Après d'autres tests, ce serait lorsque j'ouvre des formulaires de modification d'utilisateur que le plantage à lieu, hors tous les squelettes de formulaires sont identiques (mis à part les champs modifiés).
Comprend pas !
Les paramètres uid_online ne sont utilisé nul part ailleurs que dans le fichier header afin d'éviter les problèmes...
Je suis un peu perdu... Merci de vos impressions.
Modifié en dernier par moorf le 13 déc. 2005, 14:55, modifié 1 fois.

Eléphanteau du PHP | 46 Messages

13 déc. 2005, 12:24

Free a une manière particulière de gérer les sessions.
J'ai vu.
J'avais un forum phpBB configuré à la mano qui fonctionnait très bien avant, et j'ai laissé ce répertoire pour ça.