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  


 [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] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!