diff options
author | 2009-09-17 12:07:55 +0000 | |
---|---|---|
committer | 2009-09-17 12:07:55 +0000 | |
commit | 14f617d641605ccb8512d8aa5de33b3972151263 (patch) | |
tree | bfc82f1a38b01639b4bfbc72f0f78a7d80d24e2e /services | |
parent | 362ebe90ea15aa8b040496ba5c7368a974dc5633 (diff) | |
download | scuttle-14f617d641605ccb8512d8aa5de33b3972151263.tar.gz scuttle-14f617d641605ccb8512d8aa5de33b3972151263.zip |
Fix bug #2834111: Patch to detect if cookies are enabled
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@345 b3834d28-1941-0410-a4f8-b48e95affb8f
Diffstat (limited to 'services')
-rw-r--r-- | services/userservice.php | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/services/userservice.php b/services/userservice.php index d0eb96a..a2cc2da 100644 --- a/services/userservice.php +++ b/services/userservice.php @@ -24,6 +24,7 @@ class UserService { $this->sessionkey = INSTALLATION_ID.'-currentuserid'; $this->cookiekey = INSTALLATION_ID.'-login'; $this->profileurl = createURL('profile', '%2$s'); + $this->updateSessionStability(); } function _checkdns($host) { @@ -54,10 +55,13 @@ class UserService { return false; } - if ($row =& $this->db->sql_fetchrow($dbresult)) - return $row; - else - return false; + $row =& $this->db->sql_fetchrow($dbresult); + $this->db->sql_freeresult($dbresult); + if ($row) { + return $row; + } else { + return false; + } } function & getUsers($nb=0) { @@ -313,6 +317,7 @@ class UserService { $arrWatch = array(); if ($this->db->sql_numrows($dbresult) == 0) { + $this->db->sql_freeresult($dbresult); return $arrWatch; } while ($row =& $this->db->sql_fetchrow($dbresult)) { @@ -504,6 +509,38 @@ class UserService { return false; } + /** + * Sets a session variable. + * Updates it when it is already set. + * This is used to detect if cookies work. + * + * @return void + * + * @see isSessionStable() + */ + function updateSessionStability() { + //find out if we have cookies enabled + if (!isset($_SESSION['sessionStable']))) { + $_SESSION['sessionStable'] = 0; + } else { + $_SESSION['sessionStable'] = 1; + } + } + + /** + * Tells you if the session is fresh or old. + * If the session is fresh, it's the first page + * call with that session id. If the session is old, + * we know that cookies (or session persistance) works + * + * @return boolean True if the + * + * @see updateSessionStability() + */ + function isSessionStable() { + return $_SESSION['sessionStable'] == 1; + } + // Properties function getTableName() { return $this->tablename; } function setTableName($value) { $this->tablename = $value; } |