Seite 2 von 2

Verfasst: 20.11.2002 21:21
von kolo
Der Tipp hat leider nicht geholfen, aber ich habe nun eine Lösung. Ich habe den Fehler nicht beseitigt, das Problem aber umgangen. Indem ich einfach die Gäste getrennt auslese. Es ist nämlich so dass die SQL Abfrage nur registrierte User zurück liefert. Demnach kann er auch nur registrerite User auswerten.

Ich habe einfach eine neue SQl Abfrage angehängt, die nur Gäste einliesst und auswertet. Und das machst Du wie folgt (für Korrekturen bin ich dankbar)
(OHNE GEWÄHR! Bei mir geht es)


SUCHE NACH :

Code: Alles auswählen

		// Skip multiple sessions for one user
		if ( $row['session_ip'] != $prev_session_ip )
		{
			$guests_online++;
		}
	}

	$prev_session_ip = $row['session_ip'];
}

Dahinter einbringen :

Code: Alles auswählen

// -------------- wertet die Gaeste einzeln aus. 
if ($guests_online < 1)
{
 $g_sql = "SELECT session_logged_in, session_ip, session_user_id 
		  FROM ".SESSIONS_TABLE."  WHERE session_user_id = '-1'
		AND session_time >= ".( time() - 300 ) . "
	ORDER BY session_ip ASC";
 if( !($g_result = $db->sql_query($g_sql)) )
  {
	message_die(GENERAL_ERROR, 'Could not obtain user/online information', '', __LINE__, __FILE__, $g_sql);
  }
 while( $g_row = $db->sql_fetchrow($g_result) )
  {
   if ( $g_row['session_ip'] != $g_prev_session_ip )
	{
	 $guests_online++;
	}
	$g_prev_session_ip = $g_row['session_ip'];	
  }
}
Sag mal bescheid ob es damit bei Dir auch geht.

Gäste

Verfasst: 21.11.2002 09:24
von klabautermann
Ich habe aber eine andere Version, kann das dann funktionieren ( 2.0.1 und 2.0.3 )?

Verfasst: 21.11.2002 18:32
von kolo
Bei mir läufts seit gestern ohne Problem und korrekt.
Ob das bei unterschiedlichen Versionen problme bringt, weiss ihc nicht. Probier es vielleicht einfach aus. Diese Routine ließt ja nur die Session ein die von "NichtUsern" sind und zählt sie.

Verfasst: 13.12.2002 14:21
von JazzP
@Kolo,
perfekt gelöst, hätte einen ähnlichen Vorschlag gemacht.
Funktioniert auch Probfrei mit php 2.0.3
MfG Jazz

Noch eine berichtigung:
suchen

Code: Alles auswählen

else
	{
		// Skip multiple sessions for one user
		if ( $row['session_ip'] != $prev_session_ip )
		{
			$guests_online++;
		}
	}

	$prev_session_ip = $row['session_ip'];
Das löschen und dann suchen

Code: Alles auswählen

if ( $row['user_allow_viewonline'] || $userdata['user_level'] == ADMIN )
			{
				$online_userlist .= ( $online_userlist != '' ) ? ', ' . $user_online_link : $user_online_link;
			}
		}

		$prev_user_id = $row['user_id'];
	}
	
}
danach einfügen:

Code: Alles auswählen

// BEGINN -------------- wertet die Gaeste einzeln aus.
if ($guests_online < 1)
{
$g_sql = "SELECT session_logged_in, session_ip, session_user_id
        FROM ".SESSIONS_TABLE."  WHERE session_user_id = '-1'
      AND session_time >= ".( time() - 300 ) . "
   ORDER BY session_ip ASC";
if( !($g_result = $db->sql_query($g_sql)) )
  {
   message_die(GENERAL_ERROR, 'Could not obtain user/online information', '', __LINE__, __FILE__, $g_sql);
  }
while( $g_row = $db->sql_fetchrow($g_result) )
  {
   if ( $g_row['session_ip'] != $g_prev_session_ip )
   {
    $guests_online++;
   }
   $g_prev_session_ip = $g_row['session_ip'];   
  }
} 
// ENDE -------------- wertet die Gaeste einzeln aus.
Fertig!!! Funzt 100%!