[PHP] Objecten array in sessie

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Op pagina X stop ik een object van klasse A in de sessie. Deze heeft een array van objecten van klasse B. Er worden afhankelijk van userinput B objecten in deze array gepush of gepopt. Dit gebeurt niet op dezelfde pagina. Dit lijkt willekeurig fout te gaan met: Call to a member function getContent() on a non-object. getContent() is dus een functie van klasse B. Dit lijkt willekeurig te gebeuren.

Afgezien van dit probleem zou ik graag willen weten of PHP hier wel mee om kan gaan. Dus een object in de sessie wat zelf nieuwe objecten aanmaakt en in een array bewaard.

PHP versie 5.0.1...

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Voor zover ik weet kan dat. Je kunt iig een object meegeven in een sessie. Het lijkt me niet uitmaken wat de inhoud van de variabelen in een object zijn. Tenminste, een array moet kunnen.
Ik denk dat de fout ergens anders zit. In de fuctie getContent() misschien?

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Heb je de type definities van de objecten wel geinclude VOORDAT je een session_register doet? Dat moet in php4 iig wel. Zorgde bij mij ook al eens voor vreemde fouten.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Verwijderd

Topicstarter
@ bram en zwippie:

Beide suggesties zijn het niet. GetContent() is zeker weten goed. En de includes vinden voor de session_start() plaats.

Het vreemde is dat het maar 1x fout gaat. Als ik de pagina refresh doet ie wat ie moet doen en blijft gewoon werken. Als ik echter de mijn browser helemaal afsluit en opnieuw begin, gaat het eerste weer fout.

Het lijkt ons echt iets met de sessie te maken te hebben.

[ Voor 8% gewijzigd door Verwijderd op 16-09-2004 14:13 ]


Verwijderd

Verwijderd schreef op 16 september 2004 @ 13:51:
Dit lijkt willekeurig fout te gaan met: Call to a member function getContent() on a non-object. getContent() is dus een functie van klasse B. Dit lijkt willekeurig te PHP
En als je af en toe eens wat debug messages print? Bijvoorbeeld: het is nu geen object waar je getContent() op probeert aan te roepen. Maar wat is het dan wel? Is het een string? Een of ander getal?

Zodra je weet wat er staat kun je waarschijnlijk veel beter uitzoeken hoe het er komt.

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Probeer nadat je de objecten in de sessie opgeslagen hebt een session_write_close te gebruiken (dus voor het einde van je script). Dat heeft in ieder geval bij mij een keer geholpen bij een vaag sessie / object probleem.

Verwijderd

Topicstarter
session_write_close() werkt ook niet...

In de constructor wordt 1 object in de array geplaatst. Door het plaatsen van een count zijn we er achter dat hij dan netjes 1 telt. Bij de eerst volgende push telt hij er echter 3 ipv 2... Het is dus logisch dat we een foutmelding krijgen want op dat element staat nog geen object. Maar er wordt echt maar 1 push uitgevoerd.

Ik heb gewoon geen idee meer waar dit aan kan liggen.

Iedereen iig bedankt voor het mee denken...

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
volgens mij moet je wat code posten

Verwijderd

En probeer eens aan het begin en aan het eind van elke pagina een dump van je session:

PHP:
1
2
3
echo '<pre>';
print_r($_SESSION);
echo '</pre>';

[ Voor 11% gewijzigd door Verwijderd op 16-09-2004 15:18 ]


  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Als je resources gebruikt vanuit die objecten moet je goed opletten, resources kunnen imho niet in een sessie (zoals wat je terugkrijgt als je bijvoorbeeld mysql_connect doet) :)

  • Bartoz
  • Registratie: November 2000
  • Niet online
Als ik een object in een sessie gooi haal ik het object via
PHP:
1
$lMultiPageForm = unserialize( getSession( 'MultiPageForm' ) );

uit de sessie. Mischien dat je ook unserialize moet gebruiken...
MultiPageForm is overigens een class...
Pagina: 1