]> gitweb.fluxo.info Git - semanticscuttle.git/commitdiff
Fix bug #2834111: Patch to detect if cookies are enabled
authorcweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>
Thu, 17 Sep 2009 12:07:55 +0000 (12:07 +0000)
committercweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>
Thu, 17 Sep 2009 12:07:55 +0000 (12:07 +0000)
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@345 b3834d28-1941-0410-a4f8-b48e95affb8f

services/userservice.php
templates/login.tpl.php

index d0eb96a3522e78335944650b20d1ddbfa6981738..a2cc2da10d61184c882e596415c631b6f3ee1164 100644 (file)
@@ -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; }
index def2d725917aad4a4f84570ba1b49a1b52d39ad5..6592b0d4939f4957fbcefaacb59dca509e945afb 100644 (file)
@@ -8,6 +8,12 @@ window.onload = function() {
 }
 </script>
 
+<?php
+if (!$userservice->isSessionStable()) {
+    echo '<p class="error">'.T_('Please activate cookies').'</p>';
+}
+?>
+
 <form action="<?php echo $formaction; ?>" method="post">
     <div><input type="hidden" name="query" value="<?php echo $querystring; ?>" /></div>
     <table>