errata: $newObj->display(); // this *does* work On 11/29/06, list arama <listarama@xxxxxxxxxxxxxx> wrote:
Here's what I came up with: --script1--- <?php include('TestClass.php'); session_start(); $obj = $_SESSION['obj']; // session_register($obj); // recommended not to use - said to be outdated usage ob_start(); $obj = &new TestClass(); $obj->setName('MyName'); $obj->display(); header("Location: http://localhost/~mdl/webProj/photoAlbum2/receive.php <http://localhost/%7Emdl/webProj/photoAlbum2/receive.php>"); ob_flush(); ?> ---script2--- <?php include("TestClass.php"); session_start(); $newObj = $_SESSION['obj']; // this works //$_SESSION['obj'] = $newObj; // this doesn't work $_SESSION['obj']->display(); // $newObj->display(); // this doesn't $_SESSION = array(); // unsets session having effect that script fails on every second call ?> My only remaining question is why the session fails every second time if the session is emptied and destroyed. Shouldn't script1 initialize a totally new session and populate with fresh session vars? On 11/29/06, Eric Butera <digital.tarsier@xxxxxxxxx> wrote: > > On 11/29/06, Jochem Maas <jochem@xxxxxxxxxxxxx> wrote: > > Thomas Munz wrote: > > > Try that: > > > > > > --script1--- > > > <?php > > > include(" TestClass.php"); > > > session_start(); > > > > > > $obj = new TestClass(); > > > $obj->setName('MyName'); > > > $obj->display(); // outputs 'MyName' > > > > > > $str_object = serialize($obj); //-- You need to serialize an object > ( see php.net manual ) in order to make an object working via session > > > > DONT SERIALIZE! its done automatically > > > > > > > > $_SESSION['obj'] = $str_object: //-- save serialized string in the > session,note: Use $_SESSION instead of session_register(); > > > > > > header("Location: > http://localhost/~lr/webProj/photoAlbum2/sessionReceiveObj.php<http://localhost/%7Elr/webProj/photoAlbum2/sessionReceiveObj.php>"); // > re-direct to script2 > > > > > > ---script 2---- > > > <?php > > > include("TestClass.php"); > > > session_start(); > > > > > > $newObj = unserialize($_SESSION['obj']); //-- convert string back > into object > > > > DONT UNSERIALIZE! its done automatically > > > > > $newObj->display(); // MyName > > > > > > > > > on Wednesday 29 November 2006 16:18, list arama wrote: > > >> Why am I not able to access the obj name field in script 2? > > >> > > >> thanks in advance, > > >> > > >> --script1--- > > >> > > >> <?php > > >> > > >> include("TestClass.php"); > > >> > > >> session_start(); > > >> session_register('obj'); > > > > session_register() et al are going the way of the dino. > > just use $_SESSION directly, just remember to call session_start() > > before you try to use $_SESSION > > > > >> > > >> ob_start(); > > >> > > >> $obj = new TestClass(); > > >> > > >> $obj->setName('MyName'); > > >> $obj->display(); // outputs 'MyName' > > >> > > >> header("Location: > > >> http://localhost/~lr/webProj/photoAlbum2/sessionReceiveObj.php<http://localhost/%7Elr/webProj/photoAlbum2/sessionReceiveObj.php>"); // > > > >> re-direct to script2 > > >> > > >> ob_flush(); > > >> > > >> ?> > > >> > > >> ---script 2---- > > >> > > >> <?php > > >> > > >> include("TestClass.php"); > > >> > > >> session_start(); > > >> > > >> $newObj = $HTTP_SESSION_VARS['obj']; > > >> > > >> $newObj->display(); // no output, meaning no data? > > >> > > >> $newObj->setName('Michael'); > > >> $newObj->display(); // outputs 'Michael' using obj methods > > >> > > >> ?> > > > > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > It might be worth noting that if you are using php4 remember to pass > your object by reference when setting/retrieving from the session. > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > >