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
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]
<?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>
[/code]
Le header contient le traitement de la session :
[code]
<?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;
}
}
?>
[/code]
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