aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>2009-09-17 12:07:55 +0000
committercweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>2009-09-17 12:07:55 +0000
commit14f617d641605ccb8512d8aa5de33b3972151263 (patch)
treebfc82f1a38b01639b4bfbc72f0f78a7d80d24e2e
parent362ebe90ea15aa8b040496ba5c7368a974dc5633 (diff)
downloadsemanticscuttle-14f617d641605ccb8512d8aa5de33b3972151263.tar.gz
semanticscuttle-14f617d641605ccb8512d8aa5de33b3972151263.tar.bz2
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
-rw-r--r--services/userservice.php45
-rw-r--r--templates/login.tpl.php6
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() {
}
</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>