Re: passing an object using session var

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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";);
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";);  //
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";);  //
> >> 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



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux