Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme session

3 réponses
Avatar
Djalupu
bonjour

j'ai une perte aléatoir de session, :'(

je ne comprend pas le probleme voici ma structure

// dans toutes les pages en PREMIER
if (!isset($charset) or empty($charset)) $charset="iso-8859-1";
header("content-type:text/html; charset=$charset");
session_start();

// sur la page d'identification
$_SESSION['ID']=1; // num internaute


// sur les autres pages
if(!empty($_SESSION['ID']))
{
echo 'ok';
}
else
{
echo 'pas ok';
}
si quelqu'un a une soluce, merci à vous

3 réponses

Avatar
P'tit Marcel
j'ai une perte aléatoir de session, :'(
je ne comprend pas le probleme voici ma structure

// dans toutes les pages en PREMIER
if (!isset($charset) or empty($charset)) $charset="iso-8859-1";


pas glop

$charset doit être initialisé au départ, par exemple avec un
$charset=@$_REQUEST['charset']; ou un $charset=@$_SESSION['charset'];

par ailleurs, le test peut tout simplement être
if (empty($charset)) $charset="iso-8859-1";

car une variable non initialisée est "empty"
!isset($charset) ===> empty($charset)

pour des raisons de sécurité, il faudrait également vérifier le contenu
de la variable avec par exemple un:
if(!preg_match('`^[-a-z0-9]+$`i', $charset)) $charset='iso-8859-1';


sur la question de la perte de la variable ID, il faudrait préciser si
les identifiants de session sont conservés sous forme de cookie ou
ajoutés aux liens et formulaires. Quelles sont donc les valeurs de :
session.use_cookies
session.cookie_path
session.use_trans_sid
session.cache_expire
session.gc_maxlifetime
également, quelle version de php ? quel OS ?


eça
--
P'tit Marcel

Avatar
Djalupu
merci pour ta réponse,
en ce qui concerne les variables de session elles sont définies dans un
fichier d'identification qui redirige sur une administration.

normalement une session enregistrée, si je ne me trompe pas reste en
cache dans le navigateur et si il n'est pas fermé la session est
toujours utilisable ?

donc en résumé, dans mon fichier d'identification j'enregistre ma
variable de session comme ça :
$_SESSION['ID']=1;

ensuite dans l'administration je verifie dans chaque fichier si la
variable existe.

if(!empty($_SESSION['ID'])){
//ok
}
else
{
//pas ok
}



voici les infos du php.in:
------------------------------------------------------
Directive | LocalValue | MasterValue
------------------------------------------------------
session.auto_start | Off | Off
session.bug_compat_42 | On | On
session.bug_compat_warn | On | On
session.cache_expire | 180 | 180
session.cache_limiter | nocache | nocache
session.cookie_domain | no value | no value
session.cookie_lifetime | 0 | 0
session.cookie_path | / | /
session.cookie_secure | Off | Off
session.entropy_file | no value | no value
session.entropy_length | 0 | 0
session.gc_divisor | 100 | 100
session.gc_maxlifetime | 1440 | 1440
session.gc_probability | 1 | 1
session.name | PHPSESSID | PHPSESSID
session.referer_check | no value | no value
session.save_handler | files | files
session.save_path | /tmp | /tmp
session.serialize_handler| php | php
session.use_cookies | On | On
session.use_only_cookies | Off | Off
session.use_trans_sid | Off | Off
------------------------------------------------------

merci
Avatar
Calimero
Djalupu wrote:
merci pour ta réponse,
en ce qui concerne les variables de session elles sont définies dans un
fichier d'identification qui redirige sur une administration.

normalement une session enregistrée, si je ne me trompe pas reste en
cache dans le navigateur et si il n'est pas fermé la session est
toujours utilisable ?


La session non, mais le cookie qui permet d'identifier la session oui.


Sinon, il se passe (ou se passe pas) quoi exactement ?

N'y aurait-il pas de changement de domaine à un moment (genre passer
de http://www.truc.com/machin.php à http://truc.com/machin.php ou
http://localhost/machin.php à http://127.0.0.1/machin.php) ?

Si ca continue dans le bizarre, tu peux te lancer dans du debug HTTP
avec un proxy d'analyse. Vu que tu sembles être sous Windows, il
existe par exemple Fiddler. Ca te permettra de voir à quel moment les
cookies se perdent (si c'est à ce niveau que ca foire), etc...

--
@+
Calimero