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

[PHP] Session et sérialisation d'un tableau

3 réponses
Avatar
yvon.thoravallist
J'ai suivi le tutorial "Introduction to PHP Sessions" trouvé sur :
<http://www.phpfreaks.com/>
ainsi que la "FAQ PHP de PHPIndex V2.1.1".

J'ai réalisé trois types d'essais :

1 - vérifier que je sais passer une variable par "session" entre
plusieurs pages, c'est OK ;
2 - vérifier que je sais sérialiser dé-sérialiser un tableau, c'est OK ;
3 - essayer d'utiliser les deux méthodes précédentes afin de passer un
tableau associatif entre page (l'essai porte sur un cas simple : le
tableau représente la date du jour : jour, mois, annee, heure minute) .

C'est l'essai - 3 - qui pose problème
- le tableau est sérialisé correctement, il apparaît bien dans la liste
des variables de session (quand je fais un "print_r ($_SESSION );") MAIS
il est vide !!!

C'est là qu'est mon pb où vous pourriez m'apporter qq lumières.
Mon set-up : MacOS X.2.6 PHP Version 3.3.2 (compilée et packagée par
Marc Liyanage).

Comme je suis curieux, je suis allé jeter run oeil sans /private/tmp là,
j'ai bien un fichier :

sess_3d4f0a699b6308459bdeb91f98e9ed26

correspondant à l'ID de ma session MAIS, son contenu est SEULEMENT :

dateDuJourTabSer|N; ????

donc il y a bien le nom du tableau sérialisé mais pas son contenu...

dans mon /usr/local/php/php.ini j'ai bien :

session.save_handler files (confirmé par manip ci-dessus)
session.serialize_handler php (ce que je souhaite)


bizarrement, j'ai l'impression que, depuis que j'ai mis ce php.ini (il
n'y en a pas par défaut), le temps de réponse de php est nettement plus
lent...

je suis sûr que c'est ce fichier d'init (ie. /usr/local/php/php.ini) qui
est lu pour deux raisons :

1 - ce'st ce que me dit mon phpinfo()
2 - j'ai changé le mbstring.internal_encoding de EUC-JP (valeur donnée
dans le php.ini-recommanded ???) pour UTF-8 et depuis les accents
passent sans pb...

Les deux scripts :

--Celui qui enregistre le tableau sérialisé--------------------------
<html><body>
<?php
session_start();
header("Cache-control: private");// IE 6 Fix.
session_register('dateDuJourTabSer');
$dateDuJourTab = array( 'jour' => date("d"), 'mois' => date("m"),
'annee' => date("y"), 'heure' => date("H"), 'minute' => date("i"));
$dateDuJourTabSer = serialize($dateDuJourTab);
?>
Date du jour :<br/><? foreach ($dateDuJourTab as $c => $v) {echo "$c =>
$v<br/>";} ?><br/>
<a href="essai2.php">V&eacute;rifier si &ccedil;a marche !</a><br/>
<a href="session-vars.php">Variables de session</a><br/>
</body></html>
---------------------------------------------------------------------
--Celui qui lit le tableau sérialisé---------------------------------
<html><body>
<?php
session_start();
header("Cache-control: private");// IE 6 Fix.
session_register('dateDuJourTabSer');
$dateDuJourTabNew = unserialize($dateDuJourTabSer);
?>
Date du jour :<br/><? foreach ($dateDuJourTabNew as $c => $v) {echo "$c
=> $v<br/>";} ?><br/>
<a href="essai1.php">&lt;&lt;&nbsp;&nbsp;Retour</a><br/>
<a href="session-vars.php">Variables de session</a><br/>
</body></html>
---------------------------------------------------------------------

--
Yvon Thoraval
http://OrganisationPolitique.com hébergé par :
http://ouvaton.coop/

3 réponses

Avatar
yvon.thoravallist
Yvon Thoraval wrote:

C'est l'essai - 3 - qui pose problème
- le tableau est sérialisé correctement, il apparaît bien dans la liste
des variables de session (quand je fais un "print_r ($_SESSION );") MAIS
il est vide !!!


bon, comme je sents que vous fatiguez, je vous donne, en mille, la
réponse :

$_SESSION['dateDuJourTabSer']=$dateDuJourTabSer;

(a ke ce ke javais zoublié...)
--
Yvon Thoraval
http://OrganisationPolitique.com hébergé par :
http://ouvaton.coop/

Avatar
romuald
Yvon Thoraval wrote:

(a ke ce ke javais zoublié...)


Au passage je ne crois pas qu'il soit utile de sérialiser ton tableau
avant de le passer en session. Le PHP s'en charge tout seul normalement
(donc tu sauvegarde et retrouve ton tableau tel quel)

--
Romuald Brunet, ICQ 33033393, http://mog.online.fr

Signature forthcom^W

Avatar
yvon.thoravallist
Romuald Brunet wrote:

Au passage je ne crois pas qu'il soit utile de sérialiser ton tableau
avant de le passer en session. Le PHP s'en charge tout seul normalement
(donc tu sauvegarde et retrouve ton tableau tel quel)


Ah ouais, merci, c'est pas la peine de se casser le tronc...

Question, tant que j'y suis je dois faire donc :
session_register('qqChiffresTab');
$_SESSION['qqChiffresTab']=$qqChiffresTab;

et je voudrais mettre ces deux lignes dans une founction du genre
myRegister() MAIS je ne voudrais avoir à passer en argument que la
variable ici $qqChiffresTab puis-je récupérer son nom (ie
'qqChiffresTab' donc sans le $) pour automatiser la chose ?

--
Yvon Thoraval
http://OrganisationPolitique.com hébergé par :
http://ouvaton.coop/