From 14f617d641605ccb8512d8aa5de33b3972151263 Mon Sep 17 00:00:00 2001 From: cweiske Date: Thu, 17 Sep 2009 12:07:55 +0000 Subject: 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 --- services/userservice.php | 45 +++++++++++++++++++++++++++++++++++++++++---- templates/login.tpl.php | 6 ++++++ 2 files changed, 47 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; } diff --git a/templates/login.tpl.php b/templates/login.tpl.php index def2d72..6592b0d 100644 --- a/templates/login.tpl.php +++ b/templates/login.tpl.php @@ -8,6 +8,12 @@ window.onload = function() { } +isSessionStable()) { + echo '

'.T_('Please activate cookies').'

'; +} +?> +
-- cgit v1.2.3