Bug #18158 Updated: sybase session storage causing data corruption
| From: | g dot hort at unsw dot edu dot au | Date: | Thu, 04 Jul 2002 13:29:24 +0000 |
| Subject: | Bug #18158 Updated: sybase session storage causing data corruption | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-13111@lists.php.net to get a copy of this message | ||
ID: 18158
Updated by: g.hort@unsw.edu.au
Reported By: g.hort@unsw.edu.au
Status: Open
Bug Type: Session related
Operating System: Solaris 8
PHP Version: 4.2.1
New Comment:
The session handler I'm using is from sourceforge, slightly modified,
see http://www.library.unsw.edu.au/pear_session.phps
Previous Comments:
------------------------------------------------------------------------
[2002-07-04 04:35:29] g.hort@unsw.edu.au
php for Apache 1.3.26 with mod_ssl
configure --with-apxs=/usr/local/apache/bin/apxs
--with-gettext
--with-xml
--with-zlib
--with-mysql=/usr/local/mysql
--with-sybase-ct=/usr/local/sybase12.5/OCS-12.5
--with-imap=../imap-2001a
I'm using user defined session storage. mysql works fine. Both sybase
and sybase-ct can save a new session but not update it.
The routine that writes session data is:
function pear_session_write($session_id, $data)
{
global $pear_session_db;
$updated = time();
$sql = "INSERT INTO " . PEAR_SESSION_TABLE
. "(session_id, last_updated, data) "
. "VALUES('" . addslashes($session_id) . "', $updated, '"
. addslashes($data) . "')";
user_error("pear_session0: $sql ($session_id)\n");
$rs = $pear_session_db->query($sql);
user_error("pear_session1: $sql ($session_id)\n");
if (DB::isError($rs)) // probably a duplicate error: update existing
value
{
$sql = "UPDATE " . PEAR_SESSION_TABLE
. " SET last_updated = $updated, data = '"
. addslashes($data) . "' WHERE session_id = '"
. addslashes($session_id) . "'";
$rs = $pear_session_db->query($sql);
}
return !(DB::isError($rs));
}
The reason the update doesn't occur is that the variable $session_id
gets corrupted while the failing insert is executed and so the update
fails. The sybase interface seems to work fine in other (non-session)
situations.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=18158&edit=1