Package home | Report new bug | New search | Development Roadmap Status: Open | Feedback | All | Closed Since Version 0.5.6

Bug #8815 Notices with error_reporting(E_ALL)
Submitted: 2006-09-29 17:39 UTC
From: frederes at free dot fr Assigned: troehr
Status: Closed Package: HTTP_Session (version 0.5.3)
PHP Version: 4.4.4 OS: windows P
Roadmaps: (Not assigned)    
Subscription  
Comments Add Comment Add patch


Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know! Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem : 48 - 26 = ?

 
 [2006-09-29 17:39 UTC] frederes at free dot fr (frederes)
Description: ------------ When using a custom php error handler, HTTP_Session will fail because of an Undefined index in /usr/lib/php/HTTP/Session.php at line 545 A simple fix for this would be, to check if it is empty: /** * Sets new local name * * @static * @access public * @param string New local name * @return string Previous local name */ function localName($name = null) { if(!isset($GLOBALS['__HTTP_Session_Local name'])) { $GLOBALS['__HTTP_Session_Localname'] = null; } $return = $GLOBALS['__HTTP_Session_Localname']; if (isset($name)) { $GLOBALS['__HTTP_Session_Localname'] = $name; } return $return; } After this fix is applied HTTP_Session:start will be succesfull, but HTTP_Session::setLocal will fail with an undefined index too. A fix for this method would be: function setLocal($name, $value) { $local = md5(HTTP_Session::localName()); if (!isset($_SESSION[$local])) { $_SESSION[$local] = array(); } if (!isset($_SESSION[$local][$name])) { $_SESSION[$local][$name] = null; } $return = $_SESSION[$local][$name]; if (null === $value) { unset($_SESSION[$local][$name]); } else { $_SESSION[$local][$name] = $value; } return $return; } As with the last method HTTP:Session:set: function set($name, $value) { if(!isset($_SESSION[$name])) { $_SESSION[$name] = null; } $return = $_SESSION[$name]; if (null === $value) { unset($_SESSION[$name]); } else { $_SESSION[$name] = $value; } return $return; } Test script: --------------- require_once ("PEAR.php"); require_once ("HTTP/Session.php"); function php_error_handler($errno, $errstr, $errfile, $errline) { echo "$errstr in $errfile at line $errline"; exit(); } set_error_handler('php_error_handler'); HTTP_Session::start('SessionID', uniqid('MyID')); HTTP_Session::setLocal('name','value'); HTTP_Session::setLocal('name2','value'); echo "finished"; Expected result: ---------------- finished Actual result: -------------- Undefined index in /usr/lib/php/HTTP/Session.php at linenr

Comments

 [2006-10-07 12:14 UTC] troehr (Torsten Roehr)
This bug has been fixed in CVS. If this was a documentation problem, the fix will appear on pear.php.net by the end of next Sunday (CET). If this was a problem with the pear.php.net website, the change should be live shortly. Otherwise, the fix will appear in the package's next release. Thank you for the report and for helping us make PEAR better.