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
This commit is contained in:
cweiske 2009-09-17 12:07:55 +00:00
parent 362ebe90ea
commit 14f617d641
2 changed files with 47 additions and 4 deletions

View file

@ -24,6 +24,7 @@ class UserService {
$this->sessionkey = INSTALLATION_ID.'-currentuserid'; $this->sessionkey = INSTALLATION_ID.'-currentuserid';
$this->cookiekey = INSTALLATION_ID.'-login'; $this->cookiekey = INSTALLATION_ID.'-login';
$this->profileurl = createURL('profile', '%2$s'); $this->profileurl = createURL('profile', '%2$s');
$this->updateSessionStability();
} }
function _checkdns($host) { function _checkdns($host) {
@ -54,10 +55,13 @@ class UserService {
return false; return false;
} }
if ($row =& $this->db->sql_fetchrow($dbresult)) $row =& $this->db->sql_fetchrow($dbresult);
return $row; $this->db->sql_freeresult($dbresult);
else if ($row) {
return false; return $row;
} else {
return false;
}
} }
function & getUsers($nb=0) { function & getUsers($nb=0) {
@ -313,6 +317,7 @@ class UserService {
$arrWatch = array(); $arrWatch = array();
if ($this->db->sql_numrows($dbresult) == 0) { if ($this->db->sql_numrows($dbresult) == 0) {
$this->db->sql_freeresult($dbresult);
return $arrWatch; return $arrWatch;
} }
while ($row =& $this->db->sql_fetchrow($dbresult)) { while ($row =& $this->db->sql_fetchrow($dbresult)) {
@ -504,6 +509,38 @@ class UserService {
return false; 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 // Properties
function getTableName() { return $this->tablename; } function getTableName() { return $this->tablename; }
function setTableName($value) { $this->tablename = $value; } function setTableName($value) { $this->tablename = $value; }

View file

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