thank you for your explanation, when i write to $_SESSION after session_commit(),$_SESSION is just a regular array 2012/4/24 Stuart Dallas <stuart@xxxxxxxx> > Please don't top-post, and please include the list when replying. > > On 24 Apr 2012, at 06:35, bug zhu wrote: > > 2012/4/24 Stuart Dallas <stuart@xxxxxxxx> > >> On 24 Apr 2012, at 05:58, bug zhu wrote: > >> > >> > there are tow php files a.php and b.php, > >> > > >> > content of a.php as follows: > >> > <?php > >> > session_start(); > >> > if (!isset($_GET['flag'])) > >> > { > >> > header('Location: b.php'); > >> > } > >> > else > >> > { > >> > var_dump($_SESSION); > >> > } > >> > > >> > content of b.php as follows: > >> > <?php > >> > session_start(); > >> > session_commit(); > >> > $_SESSION['test'] = 'test'; > >> > session_commit(); > >> > header('Location: a.php?flag=1'); > >> > > >> > when i visit a.php, the dumped $_SESSION array is empty > >> > but if i commented the first session_commit() in b.php and then visit > >> > a.php, i cound see the $_SESSION array,which is not empty > >> > i wish i have descibed clear about my problem and someone could give > me a > >> > feedback~ > >> > >> > >> I'm really not clear on what you're trying to do here, but the > behaviour you're describing is as designed. When you call session_commit() > you are saving and closing the session, so nothing done to $_SESSION after > that point will be saved, even if you call session_commit() again. > > > > but in a single file without redirect, code as follows > > <?php > > session_start(); > > session_commit(); > > $_SESSION['test'] = 'test'; > > session_commit(); > > var_dump($_SESSION); > > > > could dump the $_SESSION array. > > Yes, because $_SESSION is not special in any way other than that it's used > by the session system; it's no more than a superglobal array. So within one > request that array contains whatever you put into it, but that doesn't mean > it is stored in whatever session storage mechanism you're using (files by > default). When you redirect to another URL that's a whole new request so > the contents of $_SESSION have to be loaded from the session storage. > > -Stuart > > -- > Stuart Dallas > 3ft9 Ltd > http://3ft9.com/ > -- thanks, bugzhu