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érifier si ç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"><< Retour</a><br/>
<a href="session-vars.php">Variables de session</a><br/>
</body></html>
---------------------------------------------------------------------
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Guillaume Bouchard
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) .
Tu va me faire douter, mais PHP gere tout seule la serialisation des tableaux pour les sessions, pas besoin de t'en occupé.
session_register('dateDuJourTabSer');
Depuis php 4.1.x tu peut utilisé $_SESSION pour te simplifier la vie.
$_SESSION['dateDuJourTavSer'] = ...;
Elle sera automatiquement sauvegardé et tu la recuperera sur la page d'apres aussi simplmement que
echo $_SESSION['dateDuJourTavSer'];
par exemple.
-- Guillaume.
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) .
Tu va me faire douter, mais PHP gere tout seule la serialisation des
tableaux pour les sessions, pas besoin de t'en occupé.
session_register('dateDuJourTabSer');
Depuis php 4.1.x tu peut utilisé $_SESSION pour te simplifier la vie.
$_SESSION['dateDuJourTavSer'] = ...;
Elle sera automatiquement sauvegardé et tu la recuperera sur la page
d'apres aussi simplmement que
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) .
Tu va me faire douter, mais PHP gere tout seule la serialisation des tableaux pour les sessions, pas besoin de t'en occupé.
session_register('dateDuJourTabSer');
Depuis php 4.1.x tu peut utilisé $_SESSION pour te simplifier la vie.
$_SESSION['dateDuJourTavSer'] = ...;
Elle sera automatiquement sauvegardé et tu la recuperera sur la page d'apres aussi simplmement que
echo $_SESSION['dateDuJourTavSer'];
par exemple.
-- Guillaume.
yvon.thoravallist
Guillaume Bouchard wrote:
Tu va me faire douter, mais PHP gere tout seule la serialisation des tableaux pour les sessions, pas besoin de t'en occupé.
session_register('dateDuJourTabSer');
Depuis php 4.1.x tu peut utilisé $_SESSION pour te simplifier la vie.
$_SESSION['dateDuJourTavSer'] = ...;
Elle sera automatiquement sauvegardé et tu la recuperera sur la page d'apres aussi simplmement que
echo $_SESSION['dateDuJourTavSer'];
non, non, tu as raison, pas besoin de sérialiser un tableau , qq'1 me l'a dit sur fr.comp.sys.mac.programmation et j'ai vérifié c'est OK.
Ceci dit "c'est dans la FAQ" : FAQ PHP de PHPIndex V2.1.1
7.11 Est-il possible de passer un tableau en argument d'une script à un autre Ce n'est pas possible directement. Par contre, il est possible de passer une chaine.
suivent deux possibilités : implode/explode et serialize/unserialize... mais peut-être ais-je mal compris la FAQ ???
Question, j'ai eu ce pb de Session suite à une étourderie (oubli de $_SESSION['dateDuJourTavSer'] = ...;) peut-on automatiser cela je veux dire, par exemple à l'enregistrement, avoir une fonction : myRegister($maVar); qui fait : session_register('maVar'); $_SESSION['maVar']=$maVar; en passant seulement $maVar en argument ??? cela suppose qu'en php (comme en perl) il est possible de récupérer le nom d'une variable ?
-- Yvon Thoraval http://OrganisationPolitique.com hébergé par : http://ouvaton.coop/
Guillaume Bouchard <gobpower@free.fr> wrote:
Tu va me faire douter, mais PHP gere tout seule la serialisation des
tableaux pour les sessions, pas besoin de t'en occupé.
session_register('dateDuJourTabSer');
Depuis php 4.1.x tu peut utilisé $_SESSION pour te simplifier la vie.
$_SESSION['dateDuJourTavSer'] = ...;
Elle sera automatiquement sauvegardé et tu la recuperera sur la page
d'apres aussi simplmement que
echo $_SESSION['dateDuJourTavSer'];
non, non, tu as raison, pas besoin de sérialiser un tableau , qq'1 me
l'a dit sur fr.comp.sys.mac.programmation et j'ai vérifié c'est OK.
Ceci dit "c'est dans la FAQ" :
FAQ PHP de PHPIndex V2.1.1
7.11 Est-il possible de passer un tableau en argument d'une script à
un autre
Ce n'est pas possible directement. Par contre, il est possible de
passer une chaine.
suivent deux possibilités : implode/explode et serialize/unserialize...
mais peut-être ais-je mal compris la FAQ ???
Question, j'ai eu ce pb de Session suite à une étourderie (oubli de
$_SESSION['dateDuJourTavSer'] = ...;) peut-on automatiser cela je veux
dire, par exemple à l'enregistrement, avoir une fonction :
myRegister($maVar); qui fait :
session_register('maVar');
$_SESSION['maVar']=$maVar;
en passant seulement $maVar en argument ???
cela suppose qu'en php (comme en perl) il est possible de récupérer le
nom d'une variable ?
--
Yvon Thoraval
http://OrganisationPolitique.com hébergé par :
http://ouvaton.coop/
Tu va me faire douter, mais PHP gere tout seule la serialisation des tableaux pour les sessions, pas besoin de t'en occupé.
session_register('dateDuJourTabSer');
Depuis php 4.1.x tu peut utilisé $_SESSION pour te simplifier la vie.
$_SESSION['dateDuJourTavSer'] = ...;
Elle sera automatiquement sauvegardé et tu la recuperera sur la page d'apres aussi simplmement que
echo $_SESSION['dateDuJourTavSer'];
non, non, tu as raison, pas besoin de sérialiser un tableau , qq'1 me l'a dit sur fr.comp.sys.mac.programmation et j'ai vérifié c'est OK.
Ceci dit "c'est dans la FAQ" : FAQ PHP de PHPIndex V2.1.1
7.11 Est-il possible de passer un tableau en argument d'une script à un autre Ce n'est pas possible directement. Par contre, il est possible de passer une chaine.
suivent deux possibilités : implode/explode et serialize/unserialize... mais peut-être ais-je mal compris la FAQ ???
Question, j'ai eu ce pb de Session suite à une étourderie (oubli de $_SESSION['dateDuJourTavSer'] = ...;) peut-on automatiser cela je veux dire, par exemple à l'enregistrement, avoir une fonction : myRegister($maVar); qui fait : session_register('maVar'); $_SESSION['maVar']=$maVar; en passant seulement $maVar en argument ??? cela suppose qu'en php (comme en perl) il est possible de récupérer le nom d'une variable ?
-- Yvon Thoraval http://OrganisationPolitique.com hébergé par : http://ouvaton.coop/
Guillaume Bouchard
7.11 Est-il possible de passer un tableau en argument d'une script à un autre Ce n'est pas possible directement. Par contre, il est possible de passer une chaine.
suivent deux possibilités : implode/explode et serialize/unserialize... mais peut-être ais-je mal compris la FAQ ???
Mais non, tu met juste ton tabelau en session, et il se serialize tout seul, comme un grand.
Question, j'ai eu ce pb de Session suite à une étourderie (oubli de $_SESSION['dateDuJourTavSer'] = ...;) peut-on automatiser cela je veux dire, par exemple à l'enregistrement, avoir une fonction : myRegister($maVar); qui fait : session_register('maVar'); $_SESSION['maVar']=$maVar;
Mais $_SESSION['maVar'] le fait tres bien seul... Avec les tableau $_SESSION, tu oublie les session_unset, et les session_register.
-- Guillaume.
7.11 Est-il possible de passer un tableau en argument d'une script à
un autre
Ce n'est pas possible directement. Par contre, il est possible de
passer une chaine.
suivent deux possibilités : implode/explode et serialize/unserialize...
mais peut-être ais-je mal compris la FAQ ???
Mais non, tu met juste ton tabelau en session, et il se serialize tout
seul, comme un grand.
Question, j'ai eu ce pb de Session suite à une étourderie (oubli de
$_SESSION['dateDuJourTavSer'] = ...;) peut-on automatiser cela je veux
dire, par exemple à l'enregistrement, avoir une fonction :
myRegister($maVar); qui fait :
session_register('maVar');
$_SESSION['maVar']=$maVar;
Mais $_SESSION['maVar'] le fait tres bien seul... Avec les tableau
$_SESSION, tu oublie les session_unset, et les session_register.
7.11 Est-il possible de passer un tableau en argument d'une script à un autre Ce n'est pas possible directement. Par contre, il est possible de passer une chaine.
suivent deux possibilités : implode/explode et serialize/unserialize... mais peut-être ais-je mal compris la FAQ ???
Mais non, tu met juste ton tabelau en session, et il se serialize tout seul, comme un grand.
Question, j'ai eu ce pb de Session suite à une étourderie (oubli de $_SESSION['dateDuJourTavSer'] = ...;) peut-on automatiser cela je veux dire, par exemple à l'enregistrement, avoir une fonction : myRegister($maVar); qui fait : session_register('maVar'); $_SESSION['maVar']=$maVar;
Mais $_SESSION['maVar'] le fait tres bien seul... Avec les tableau $_SESSION, tu oublie les session_unset, et les session_register.
-- Guillaume.
yvon.thoravallist
Guillaume Bouchard wrote:
Ce n'est pas possible directement. Par contre, il est possible de passer une chaine.
Mais non, tu met juste ton tabelau en session, et il se serialize tout seul, comme un grand.
je ne faisais que citer la FAQ... une erreur ???
(quick)
Mais $_SESSION['maVar'] le fait tres bien seul... Avec les tableau $_SESSION, tu oublie les session_unset, et les session_register.
ah on n'est plus obligé de faire : session_register(maVar); puis : $_SESSION {maVar} = $ maVar; seul : $_SESSION {maVar} = $ maVar; suffit ??? -- Yvon Thoraval http://OrganisationPolitique.com hébergé par : http://ouvaton.coop/
Guillaume Bouchard <gobpower@free.fr> wrote:
Ce n'est pas possible directement. Par contre, il est possible de
passer une chaine.
Mais non, tu met juste ton tabelau en session, et il se serialize tout
seul, comme un grand.
je ne faisais que citer la FAQ... une erreur ???
(quick)
Mais $_SESSION['maVar'] le fait tres bien seul... Avec les tableau
$_SESSION, tu oublie les session_unset, et les session_register.
ah on n'est plus obligé de faire :
session_register(maVar);
puis :
$_SESSION {maVar} = $ maVar;
seul :
$_SESSION {maVar} = $ maVar; suffit ???
--
Yvon Thoraval
http://OrganisationPolitique.com hébergé par :
http://ouvaton.coop/
Ce n'est pas possible directement. Par contre, il est possible de passer une chaine.
Mais non, tu met juste ton tabelau en session, et il se serialize tout seul, comme un grand.
je ne faisais que citer la FAQ... une erreur ???
(quick)
Mais $_SESSION['maVar'] le fait tres bien seul... Avec les tableau $_SESSION, tu oublie les session_unset, et les session_register.
ah on n'est plus obligé de faire : session_register(maVar); puis : $_SESSION {maVar} = $ maVar; seul : $_SESSION {maVar} = $ maVar; suffit ??? -- Yvon Thoraval http://OrganisationPolitique.com hébergé par : http://ouvaton.coop/
Guillaume Bouchard
je ne faisais que citer la FAQ... une erreur ???
Peut etre, je n'ai pas trouvé ca dans la faq en question... Mais je n'ai pas approfondi ma recherche.
ah on n'est plus obligé de faire : session_register(maVar);
Et ben non :) Vive php 4.1 :)
puis : $_SESSION {maVar} = $ maVar; seul : $_SESSION {maVar} = $ maVar; suffit ???
Apres plusieurs tests, j'ai remarqué que session_register ne fonctione pas avec register_globals a Off, donc il faut utilisé SEULEMENT $_SESSION et le probleme est reglé.
-- Guillaume.
je ne faisais que citer la FAQ... une erreur ???
Peut etre, je n'ai pas trouvé ca dans la faq en question... Mais je n'ai
pas approfondi ma recherche.
ah on n'est plus obligé de faire :
session_register(maVar);
Et ben non :) Vive php 4.1 :)
puis :
$_SESSION {maVar} = $ maVar;
seul :
$_SESSION {maVar} = $ maVar; suffit ???
Apres plusieurs tests, j'ai remarqué que session_register ne fonctione
pas avec register_globals a Off, donc il faut utilisé SEULEMENT
$_SESSION et le probleme est reglé.
Peut etre, je n'ai pas trouvé ca dans la faq en question... Mais je n'ai pas approfondi ma recherche.
ah on n'est plus obligé de faire : session_register(maVar);
Et ben non :) Vive php 4.1 :)
puis : $_SESSION {maVar} = $ maVar; seul : $_SESSION {maVar} = $ maVar; suffit ???
Apres plusieurs tests, j'ai remarqué que session_register ne fonctione pas avec register_globals a Off, donc il faut utilisé SEULEMENT $_SESSION et le probleme est reglé.
-- Guillaume.
yvon.thoravallist
Guillaume Bouchard wrote:
Apres plusieurs tests, j'ai remarqué que session_register ne fonctione pas avec register_globals a Off, donc il faut utilisé SEULEMENT $_SESSION et le probleme est reglé.
bizarre ça, chez moi ca marche avec php 4.3.2 et reg glob off...
tiens au fait, depuis que je suis passé en 4.3.2 je n'arrive plus à avoir un seul message d'erreur de php même quand je fais :
error_reporting (E_ALL);
ds le scrip^t lui-même... -- Yvon Thoraval http://OrganisationPolitique.com hébergé par : http://ouvaton.coop/
Guillaume Bouchard <gobpower@free.fr> wrote:
Apres plusieurs tests, j'ai remarqué que session_register ne fonctione
pas avec register_globals a Off, donc il faut utilisé SEULEMENT
$_SESSION et le probleme est reglé.
bizarre ça, chez moi ca marche avec php 4.3.2 et reg glob off...
tiens au fait, depuis que je suis passé en 4.3.2 je n'arrive plus à
avoir un seul message d'erreur de php même quand je fais :
error_reporting (E_ALL);
ds le scrip^t lui-même...
--
Yvon Thoraval
http://OrganisationPolitique.com hébergé par :
http://ouvaton.coop/
Apres plusieurs tests, j'ai remarqué que session_register ne fonctione pas avec register_globals a Off, donc il faut utilisé SEULEMENT $_SESSION et le probleme est reglé.
bizarre ça, chez moi ca marche avec php 4.3.2 et reg glob off...
tiens au fait, depuis que je suis passé en 4.3.2 je n'arrive plus à avoir un seul message d'erreur de php même quand je fais :
error_reporting (E_ALL);
ds le scrip^t lui-même... -- Yvon Thoraval http://OrganisationPolitique.com hébergé par : http://ouvaton.coop/
Guillaume Bouchard
tiens au fait, depuis que je suis passé en 4.3.2 je n'arrive plus à avoir un seul message d'erreur de php même quand je fais :
error_reporting (E_ALL);
display_errors est sur off par default dans le php.ini.
-- Guillaume.
tiens au fait, depuis que je suis passé en 4.3.2 je n'arrive plus à
avoir un seul message d'erreur de php même quand je fais :
error_reporting (E_ALL);
display_errors est sur off par default dans le php.ini.