[PHP] Register Globals problemen...

Pagina: 1
Acties:

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Ik heb wat problemen met register globals in combinatie met objecten. Zodra ik het object uit het sessie object haal vergeet hij alle functies die in het object horen....
PHP:
1
<?ini_set("register_globals","0");// Voor mensen die register global niet uit hebben staanclass test {function set($var) {    $this->testing=$var;}function read() {    return $this->testing;}} // END OBJECTsrand(time());         // SEMI RANDOM, maar genoeg voor het testen$blaat=new test();  // Maak objectsession_start(); if (!isset($_SESSION["blaat"])) { // SESSION STARTED?    session_register("blaat");}else {    $blaat=$_SESSION["blaat"];}$random=rand(1,100);echo "Random: ", $random,"<BR>";echo "Old Val:", $blaat->read(),"<BR>";       // LEES OUDE WAARDE$blaat->set($random);echo "New Val:", $blaat->read(),"<BR>";     // LEES NIEUW WAARDE?>

Iemand een idee hoe ik dit kan oplossen?

Programmer - an organism that turns coffee into software.


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

check de Magic Functions vermoed ik.

Klaar voor een nieuwe uitdaging.


  • Grum
  • Registratie: Juni 2001
  • Niet online
je maakt een kopie van je object: $blaat=$_SESSION["blaat"];

gebruik daar
code:
1
$blaat = &$_SESSION["blaat"];

en het zou moeten werken.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Dit is de complete code... Heb ff een korte test script geschreven. En ik heb hem nu even veranderd naar dit
PHP:
1
<?ini_set("register_globals","0");// Voor mensen die register global niet uit hebben staanclass test {function set($var) {    $this->testing=$var;}function read() {    return $this->testing;}}srand(time());         // SEMI RANDOM, maar genoeg voor het testensession_start(); if ($_GET["destroy"]==1) {    session_destroy();    die();}if (!isset($_SESSION["blaat"])) { // SESSION STARTED?    $blaat=new test();  // Maak object    session_register("blaat");}else {    $blaat=$_SESSION["blaat"];}$random=rand(1,100);echo "Random: ", $random,"<BR>";echo "Old Val:", $blaat->read(),"<BR>";       // LEES OUDE WAARDE$blaat->set($random);echo "New Val:", $blaat->read(),"<BR>";     // LEES NIEUW WAARDE?>

De eerste keer: er is geen old value en object wordt netjes geregistreerd.
De tweede keer: Er is een old value en object wordt goed uit het sessie object gehaald. Maar de new value wordt niet opgeslagen in het sessie object.

????

Chem: Wat voor een acties zou ik dan tijdens wakeup moeten doen om de juiste waardes op te halen?

Grum: Dit is alle code... Het complete script. Speciaal geschreven om dit probleem op te lossen.

Programmer - an organism that turns coffee into software.


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
GRUM!!! >:)

Je hebt het... >:)

Thx...

Programmer - an organism that turns coffee into software.


  • Grum
  • Registratie: Juni 2001
  • Niet online
Mja sorry btw dat ik me reactie zomaar changde :D

Maar ik zag ineens wel de oplossing en dat wat jij deed met het printen van de oldvalue voor je der 1 had toch ook wel zinnig was (na de reload welliswaar :D)

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Het werkt ook in me script.... >:) >:)

* LuCarD huppelt eens vrolijk om de tafel....
collega's kijken hier een beetje raar, ma goed

Programmer - an organism that turns coffee into software.

Pagina: 1