diff options
| -rw-r--r-- | services/userservice.php | 45 | ||||
| -rw-r--r-- | 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() {  }  </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> | 
