diff --git a/phpBB/styles/subSilver/template/viewonline_body.html b/phpBB/styles/subSilver/template/viewonline_body.html
index ba504700f9..be0b9f6895 100644
--- a/phpBB/styles/subSilver/template/viewonline_body.html
+++ b/phpBB/styles/subSilver/template/viewonline_body.html
@@ -4,22 +4,18 @@
 
 	<table class="tablebg" width="100%" cellspacing="1">
 		<tr> 
-			<th width="35%"><a class="th" href="{U_SORT_USERNAME}">{L_USERNAME}</a></th>
-			<th width="25%"><a class="th" href="{U_SORT_UPDATED}">{L_LAST_UPDATED}</a></th>
+			<th width="40%"><a class="th" href="{U_SORT_USERNAME}">{L_USERNAME}</a></th>
+			<th width="20%"><a class="th" href="{U_SORT_UPDATED}">{L_LAST_UPDATED}</a></th>
 			<th width="40%"><a class="th" href="{U_SORT_LOCATION}">{L_FORUM_LOCATION}</a></th>
 		</tr>
 		<tr> 
 			<td class="cat" colspan="3"><h4>{TOTAL_REGISTERED_USERS_ONLINE}</h4></td>
 		</tr>
 		<!-- BEGIN reg_user_row -->
-		<!-- IF reg_user_row.S_ROW_COUNT is even -->
 		<tr>
-		<!-- ELSE -->
-		<tr class="row2">
-		<!-- ENDIF -->
-			<td class="row1" width="35%"><p class="gen"><!-- IF reg_user_row.U_USER_PROFILE --><a href="{reg_user_row.U_USER_PROFILE}"><!-- ENDIF -->{reg_user_row.USERNAME}<!-- IF reg_user_row.U_USER_PROFILE --></a><!-- ENDIF -->&nbsp;</p><!-- IF reg_user_row.USER_IP --><p class="gensmall">{L_IP}: <a href="{reg_user_row.U_USER_IP}">{reg_user_row.USER_IP}</a> &#187; <a href="{reg_user_row.U_WHOIS}" onclick="popup('{reg_user_row.U_WHOIS}', 750, 500);return false">{L_WHOIS}</a></p><!-- ENDIF --></td>
-			<td class="row1" width="25%" align="center" nowrap="nowrap"><span class="gen">&nbsp;{reg_user_row.LASTUPDATE}&nbsp;</span></td>
-			<td class="row1" width="40%">&nbsp;<a class="gen" href="{reg_user_row.U_FORUM_LOCATION}">{reg_user_row.FORUM_LOCATION}</a>&nbsp;</td>
+			<td class="row1"><p class="gen"><!-- IF reg_user_row.U_USER_PROFILE --><a href="{reg_user_row.U_USER_PROFILE}"><!-- ENDIF -->{reg_user_row.USERNAME}<!-- IF reg_user_row.U_USER_PROFILE --></a><!-- ENDIF --></p><!-- IF reg_user_row.USER_IP --><p class="gensmall">{L_IP}: <a href="{reg_user_row.U_USER_IP}">{reg_user_row.USER_IP}</a> &#187; <a href="{reg_user_row.U_WHOIS}" onclick="popup('{reg_user_row.U_WHOIS}', 750, 500);return false">{L_WHOIS}</a></p><!-- ENDIF --></td>
+			<td class="row2" align="center" nowrap="nowrap"><p class="genmed">&nbsp;{reg_user_row.LASTUPDATE}</p></td>
+			<td class="row1"><p class="genmed"><a href="{reg_user_row.U_FORUM_LOCATION}">{reg_user_row.FORUM_LOCATION}</a></p></td>
 		</tr>
 		<!-- END reg_user_row -->
 		<!-- IF LEGEND -->
@@ -31,14 +27,10 @@
 			<td class="cat" colspan="3"><h4>{TOTAL_GUEST_USERS_ONLINE}</h4></td>
 		</tr>
 		<!-- BEGIN guest_user_row -->
-		<!-- IF guest_user_row.S_ROW_COUNT is even -->
-		<tr class="row1">
-		<!-- ELSE -->
-		<tr class="row2">
-		<!-- ENDIF -->
-			<td class="gen" width="35%" height="28">&nbsp;<span  title="{guest_user_row.USER_IP}">{guest_user_row.USERNAME}</span>&nbsp;</td>
-			<td class="gen" width="25%" align="center" nowrap="nowrap">&nbsp;{guest_user_row.LASTUPDATE}&nbsp;</td>
-			<td class="gen" width="40%">&nbsp;<a href="{guest_user_row.U_FORUM_LOCATION}">{guest_user_row.FORUM_LOCATION}</a>&nbsp;</td>
+		<tr>
+			<td class="row1"><p class="gen">{guest_user_row.USERNAME}</p><!-- IF guest_user_row.USER_IP --><p class="gensmall">{L_IP}: <a href="{guest_user_row.U_USER_IP}">{guest_user_row.USER_IP}</a> &#187; <a href="{guest_user_row.U_WHOIS}" onclick="popup('{guest_user_row.U_WHOIS}', 750, 500);return false">{L_WHOIS}</a></p><!-- ENDIF --></td>
+			<td class="row2" align="center" nowrap="nowrap"><p class="genmed">{guest_user_row.LASTUPDATE}</p></td>
+			<td class="row1"><p class="genmed"><a href="{guest_user_row.U_FORUM_LOCATION}">{guest_user_row.FORUM_LOCATION}</a></p></td>
 		</tr>
 		<!-- END guest_user_row -->
 	</table>
diff --git a/phpBB/viewonline.php b/phpBB/viewonline.php
index 293bdf070d..778e9f889e 100644
--- a/phpBB/viewonline.php
+++ b/phpBB/viewonline.php
@@ -23,7 +23,7 @@ $user->setup();
 
 // Get and set some variables
 $mode		= request_var('mode', '');
-$user_id	= request_var('u', 0);
+$session_id	= request_var('s', '');
 $start		= request_var('start', 0);
 $sort_key	= request_var('sk', 'b');
 $sort_dir	= request_var('sd', 'd');
@@ -41,8 +41,8 @@ if ($mode == 'whois')
 
 	$sql = 'SELECT u.user_id, u.username, u.user_type, s.session_ip
 	FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . " s
-	WHERE u.user_id = $user_id 
-		AND	s.session_user_id = u.user_id";
+	WHERE s.session_id = '$session_id' 
+		AND	u.user_id = s.session_user_id";
 	$result = $db->sql_query($sql);
 
 	if ($row = $db->sql_fetchrow($result))
@@ -82,7 +82,7 @@ $db->sql_freeresult($result);
 
 
 // Get user list
-$sql = 'SELECT u.user_id, u.username, u.user_type, u.user_allow_viewonline, u.user_colour, s.session_time, s.session_page, s.session_ip, s.session_allow_viewonline
+$sql = 'SELECT u.user_id, u.username, u.user_type, u.user_allow_viewonline, u.user_colour, s.session_id, s.session_time, s.session_page, s.session_ip, s.session_allow_viewonline
 	FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . ' s
 	WHERE u.user_id = s.session_user_id
 		AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) . ' 
@@ -136,8 +136,7 @@ while ($row = $db->sql_fetchrow($result))
 	if ($view_online)
 	{
 		preg_match('#^([a-z]+)#i', $row['session_page'], $on_page);
-//		echo $row['session_page'];
-//		print_r($on_page);
+
 		switch ($on_page[1])
 		{
 			case 'index':
@@ -222,13 +221,13 @@ while ($row = $db->sql_fetchrow($result))
 			'USERNAME' 		=> $username,
 			'LASTUPDATE' 	=> $user->format_date($row['session_time']),
 			'FORUM_LOCATION'=> $location, 
-			'USER_IP'		=> ($auth->acl_get('a_')) ? (($mode == 'lookup' && $user_id == $row['user_id']) ? gethostbyaddr($row['session_ip']) : $row['session_ip']) : '', 
+			'USER_IP'		=> ($auth->acl_get('a_')) ? (($mode == 'lookup' && $session_id == $row['session_id']) ? gethostbyaddr($row['session_ip']) : $row['session_ip']) : '', 
 
 			'S_ROW_COUNT'	=> $$which_counter,
 
 			'U_USER_PROFILE'	=> ($row['user_type'] <> USER_IGNORE) ? "memberlist.$phpEx$SID&amp;mode=viewprofile&amp;u=" . $row['user_id'] : '',
-			'U_USER_IP'			=> "viewonline.$phpEx$SID" . (($mode != 'lookup') ? '&amp;mode=lookup&amp;u=' . $row['user_id'] : ''), 
-			'U_WHOIS'			=> "viewonline.$phpEx$SID&amp;mode=whois&amp;u=" . $row['user_id'], 
+			'U_USER_IP'			=> "viewonline.$phpEx$SID" . (($mode != 'lookup' || $row['session_id'] != $session_id) ? '&amp;mode=lookup&amp;s=' . $row['session_id'] : ''), 
+			'U_WHOIS'			=> "viewonline.$phpEx$SID&amp;mode=whois&amp;s=" . $row['session_id'], 
 			'U_FORUM_LOCATION'	=> $location_url)
 		);