Bug #13078 Updated: register_globals = off & session.save_handler = user

From: Date: Fri, 14 Dec 2001 07:56:04 +0000
Subject: Bug #13078 Updated: register_globals = off & session.save_handler = user
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-73684@lists.php.net to get a copy of this message
ID: 13078
Updated by: yohgaki
Reported By: php-jp@typhoon.co.jp
Old Status: Closed
Status: Assigned
Bug Type: Session related
Operating System: FreeBSD 4.x
PHP Version: 4.0.6, 4.1.0
Old Assigned To: 
Assigned To: yohgaki
New Comment:

It is bug in your session handler, but PHP should not behave that way.



Previous Comments:
------------------------------------------------------------------------

[2001-12-14 02:52:59] derick@php.net

Closing then...

------------------------------------------------------------------------

[2001-12-14 01:45:54] php-jp@typhoon.co.jp

Sorry, but further testing revealed when sess_read

  return NULL;

for when nothing was found caused problems sometimes, not always!

However

  return '';

seems to work all of the time!  

Looks like sess_write has to return a '' (null string) It cannot return NULL, nor it
return false;

Otherise sess_write will never be called!
---ends---

------------------------------------------------------------------------

[2001-12-14 00:19:21] php-jp@typhoon.co.jp

Problem solved in 4.1.0 (release).

All thanks to yohgaki@php.net for pointing me to his very well written code!

I found the reason my sess_write was never called with register_globals = off was because my
sess_read function was something like this:

   sess_read( $key)
   ...
   if I find stuff for $key from PostgreSQL {
      return $valuesfound;
   }
   else {
      return false;
   }

The problem was with "return false;"
After changing:

    return false;

to
    return NULL;

things worked.

Don't know why the "return false" worked with "register_globals=on" and
"register_global=off" requires sess_read to return NULL if nothing was found...

THANKS again to yohgaki@php.net for his code and my apologise for wasting people's time.

Please feel free to close this bug report.  I am not closing it because derick@php.net brought up
something which I don't know about nor can I duplicate. 
---ends---

      

------------------------------------------------------------------------

[2001-12-13 22:04:18] sniper@php.net

Just to note that I can not reproduce this with latest CVS.

--Jani


------------------------------------------------------------------------

[2001-12-13 05:55:59] derick@php.net

PHP 4.1.0 (release)

TEST SCRIPT:
<?php
    session_start();
    $_SESSION['test'] = 'YES';
    echo ini_get('register_globals');
?>

SESSION FILE CONTENTS:

With register_globals = 1:
<empty>

With register_globals = 0:
test|s:3:"YES";

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/?id=13078


Edit this bug report at http://bugs.php.net/?id=13078&edit=1



Thread (21 messages)

« previous php.dev (#73684) next »