Problème bizarre de perte partielle de session

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème bizarre de perte partielle de session

par moorf » 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.

par moorf » 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.

par mere-teresa » 13 déc. 2005, 12:17

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

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

Problème bizarre de perte partielle de session

par moorf » 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