diff options
Diffstat (limited to 'phpBB/includes/session.php')
| -rw-r--r-- | phpBB/includes/session.php | 26 | 
1 files changed, 20 insertions, 6 deletions
diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index fe5357f32e..04b15b17d3 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -121,6 +121,8 @@ class session  		$script_path .= (substr($script_path, -1, 1) == '/') ? '' : '/';  		$root_script_path .= (substr($root_script_path, -1, 1) == '/') ? '' : '/'; +		$forum_id = (isset($_REQUEST['f']) && $_REQUEST['f'] > 0 && $_REQUEST['f'] < 16777215) ? (int) $_REQUEST['f'] : 0; +  		$page_array += array(  			'page_name'			=> $page_name,  			'page_dir'			=> $page_dir, @@ -130,7 +132,7 @@ class session  			'root_script_path'	=> str_replace(' ', '%20', htmlspecialchars($root_script_path)),  			'page'				=> $page, -			'forum'				=> (isset($_REQUEST['f']) && $_REQUEST['f'] > 0) ? (int) $_REQUEST['f'] : 0, +			'forum'				=> $forum_id,  		);  		return $page_array; @@ -556,7 +558,12 @@ class session  		$method = 'autologin_' . $method;  		if (function_exists($method))  		{ -			$this->data = $method(); +			$user_data = $method(); + +			if ($user_id === false || (isset($user_data['user_id']) && $user_id == $user_data['user_id'])) +			{ +				$this->data = $user_data; +			}  			if (sizeof($this->data))  			{ @@ -576,11 +583,18 @@ class session  					AND k.user_id = u.user_id  					AND k.key_id = '" . $db->sql_escape(md5($this->cookie_data['k'])) . "'";  			$result = $db->sql_query($sql); -			$this->data = $db->sql_fetchrow($result); +			$user_data = $db->sql_fetchrow($result); + +			if ($user_id === false || (isset($user_data['user_id']) && $user_id == $user_data['user_id'])) +			{ +				$this->data = $user_data; +				$bot = false; +			} +  			$db->sql_freeresult($result); -			$bot = false;  		} -		else if ($user_id !== false && !sizeof($this->data)) + +		if ($user_id !== false && !sizeof($this->data))  		{  			$this->cookie_data['k'] = '';  			$this->cookie_data['u'] = $user_id; @@ -1037,7 +1051,7 @@ class session  		$name_data = rawurlencode($config['cookie_name'] . '_' . $name) . '=' . rawurlencode($cookiedata);  		$expire = gmdate('D, d-M-Y H:i:s \\G\\M\\T', $cookietime); -		$domain = (!$config['cookie_domain'] || $config['cookie_domain'] == 'localhost' || $config['cookie_domain'] == '127.0.0.1') ? '' : '; domain=' . $config['cookie_domain']; +		$domain = (!$config['cookie_domain'] || $config['cookie_domain'] == '127.0.0.1' || strpos($config['cookie_domain'], '.') === false) ? '' : '; domain=' . $config['cookie_domain'];  		header('Set-Cookie: ' . $name_data . (($cookietime) ? '; expires=' . $expire : '') . '; path=' . $config['cookie_path'] . $domain . ((!$config['cookie_secure']) ? '' : '; secure') . '; HttpOnly', false);  	}  | 
