Journal PHP session : j'comprends pas

Posté par  .
Étiquettes : aucune
0
30
jan.
2004
Cher journal, j'ai un petit pb avec la gestion des sessions en PHP. Ce que je souhaites faire : creer un session si elle n'existe pas, y mettre quelques variables. Si elle existe modifier ces variables. Ce que j'ai fait :

if( !session_id())
{
session_start();
$var1 = "coucou";
$var2 = "coucou2";
session_register(var1);
session_register(var2);
}
else
{
$var1 = "bonjour";
session_register(var1);
}

Ce que cela fait :
il considere que la session est toujours crée meme quand c'est pas le cas. Si je le force pour enregistrer ma session (a l'aide d'un test bidon plutot que celui la), quand la session sera crée, il ne modifira pas mes variables.
j'ai aussi tenté :
else
{
$tmp_var1 = "bonjour";
$tmp_var2 = $var2;
session_unset();
session_destroy();
unset $var1;
unset $var2;
session_start()
$var1 = $tmp_var1;
$var2 = tmp_var2;
session_register($var1);
session_register($var2);
}

Et la il me dit que $var1 est toujours à coucou. Bref je ne comprends rien à ce qu'il me fait.

Donc pour resumer :
Comment verifier que la session existe ?
Comment modifier les variables d'une session ?

Merci

PS : google n'a pas été mon ami sur ce coup la, j'ai rien trouvé d'interessant sur zend.com ou php.net
  • # Re: PHP session : j'comprends pas

    Posté par  (site web personnel) . Évalué à 1.

    http://fr2.php.net/session_register(...)
    session_register prend en parametre des noms de variables, pas les variables elles meme donc "var1" pas $var1 (pour la fin vu qu'au debut tu met sans le $ donc ca devient "var1" et ca te vaut un notice si tu as l'error reporting à fond)

    J'ai pas regardé le reste et je vais dormir :-)
  • # Re: PHP session : j'comprends pas

    Posté par  (site web personnel) . Évalué à 2.

    Il vaut mieux éviter d'utiliser session_register() ou session_unregister(), il est préférable de manipuler directement le tableau superglobal $_SESSION
  • # Re: PHP session : j'comprends pas

    Posté par  . Évalué à 1.

    Si je ne m'abuse, appeler n'importe quelle fonction relative aux sessions PHP commence par un appel à session_start(); t'auras donc toujours un SESSION_ID dans ton test du début.

    ça me semble plus facile de faire un truc genre:

    if (!$_SESSION[$mavariablequiditqueçafaitplusieurspagesquejevisite]) {
    // du code
    }

    à emballer dans un joli:

    if (!$myVisitorSession->isInitialized()){

    }

    ça fait tout de suite moins crado...
    • [^] # Re: PHP session : j'comprends pas

      Posté par  . Évalué à 1.

      Merci, c'etait bien ce probleme la. J'avais compris que session_start() débutait une nouvelle session, donc à n'appeler qu'une seule fois par session.
  • # Commentaire supprimé

    Posté par  . Évalué à 1.

    Ce commentaire a été supprimé par l’équipe de modération.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.