Seite 1 von 2

Who is online in echtzeit - geht das ?

Verfasst: 26.01.2003 19:08
von siebenschlaefer
Die anzeigen darüber wer online ist und die anzeige in der viewtopic.tpl zeigen ja nur an wer in den letzten 5 minuten online war - gibt es eine möglichkeit das ganze für den jetzigen zeitpubkt zu haben - ich hab nämlich den online/offline hack installiert und da dieser anscheinend in echtzeit fuktioniert ist es schon etwas erwirrend wenn bei den boardintegrierten anzeigen noch steht dass jemand online ist und der hack aber zeigt dass dieser user offline ist - hat jemand ne idee damit die bereits im ursprünglichen board enthaltenen anzeigen so funktionieren wie der hack ?

Verfasst: 26.01.2003 19:18
von PhilippK
Der online/offline hack wird da auch nicht viel anders arbeiten können, da es technisch nicht anders möglich ist. Du kannst nur herausfinden, wann ein User das letzte Mal etwas gemacht hat - ob sein Browser noch eine Seite deines Forums anzeigt oder nicht, kannst du nicht herausfinden.

Gruß, Philipp

Verfasst: 26.01.2003 19:19
von downtown
ich glaube nicht, dass du einen online-/offline-hack hast, welcher in echtzeit ermittelt. sowas ist mit dem http-protokoll nicht möglich. und, naja, das ganze www funktioniert mit http :-?

auch dieser hack funktioniert sicher mit einer zeit-funktion, ich denke er übernimmt die sessions vom phpbb...

Verfasst: 26.01.2003 22:11
von siebenschlaefer
ja mir ist schon klar dass der online/offline hack nicht in echtzeit funktioniert aber er registriert wann der user zuletzt was gemacht hat und zeigt dadurch den online oder offline status an - die anzeige vom board her zeigt laut board aussage generell nur an wer in den letzten 5 minuten online war - nun soll das dem hack nur angeglichen werden denn wenn jemand off ist zeigt mir das board 4 bis 5 minuten später noch an dass er noch online wäre - der hack hat aber bereits registriert dass er nicht mehr da ist.......

Verfasst: 26.01.2003 23:15
von PhilippK
Irgendwo musst du halt die Grenze ziehen. Bei 'Wer online ist' wird diese Grenze nach fünf Minuten gesetzt: wer in den letzten fünf Minuten eine Seite des Boards aufgerufen hat, wird als online angezeigt.
Das online/offline Hack kann eigentlich nur auf eine ähnliche Funktion aufbauen - vielleicht eben mit 'ner Grenze.

Gruß, Philipp

Verfasst: 26.01.2003 23:25
von siebenschlaefer
also der hack schaut so aus:

Code: Alles auswählen

######################################################## 
## Mod Title:   Show Online In View Topic 
## Mod Version: 2.0.0
## Author:      AJ Quick, (http://www.ajquick.com/)
##
## Description:  
## This mod will show the status of a user in viewtopic
## next to their post. Stating if they are online or not.
##
## This mod is for phpBB2 ver 2.0.X
## 
## Portions of this script were inspired/written by
## other people. I can only claim partial credit.
##
## Installation Level:  Easy 
## Installation Time:   1-2 Minutes 
## Files To Edit:      2 
##	viewtopic.php
##	/templates/SubSilver/Viewtopic_body.tpl
##
##########################################################
## 
## Installation Notes: 
##
## There is some customization that will need to be 
## done in Viewtopic_body.tpl It is really up to you
## where you want it to be placed.
##
######################################################## 

# 
#-----[ OPEN ]------------------------------------------ 
# 

Viewtopic.php

# 
#-----[ FIND ]------------------------------------------ 
# 

u.user_allowavatar, u.user_allowsmile, 

# 
#-----[ ADD AFTER ]------------------------------------------ 
# 

u.user_allow_viewonline, u.user_session_time, 

# 
#-----[ FIND ]------------------------------------------ 
# 

	//
	// Again this will be handled by the templating
	// code at some point
	//
	$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
	$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 

//User Online Hack
//By AJ Quick (http://www.ajquick.com/)
if($postrow[$i]['user_session_time'] >= (time()-60)){
if($postrow[$i]['user_allow_viewonline']){
$status = '<b><a href="viewonline.php">Online!</a></b>';
}else{
$status = "Offline";
}
}else{
$status = "Offline";
}

# 
#-----[ FIND ]------------------------------------------ 
# 

		'POSTER_JOINED' => $poster_joined,
		'POSTER_POSTS' => $poster_posts,

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 

		'POSTER_STATUS' => $status,

# 
#-----[ OPEN ]------------------------------------------ 
#

templates/SubSilver/Viewtopic_body.tpl

# 
#-----[ FIND: Something Similar ]------------------------------------------ 
#

		<td width="150" align="left" valign="top" class="{postrow.ROW_CLASS}"><span class="name"><a name="{postrow.U_POST_ID}"></a><b>{postrow.POSTER_NAME}</b></span><br /><span class="postdetails">{postrow.POSTER_RANK}<br /><br /><div align="center">{postrow.RANK_IMAGE}{postrow.POSTER_AVATAR}</div><br /><br /> {postrow.POSTER_JOINED}<br />{postrow.POSTER_POSTS}</span></td>

# 
#-----[ Somewhere... ADD ]------------------------------------------ 
# 

Status: {postrow.POSTER_STATUS}

# That's It!
# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 
# EoM 


Verfasst: 26.01.2003 23:31
von PhilippK
Da ist dann einfach die Grenze bei einer Minute gesetzt. Wenn du also 'ne längere Antwort schreibst, bist du schon wieder offline...

And now, where's the problem?

Gruß, Philipp

Verfasst: 26.01.2003 23:38
von siebenschlaefer
na ich würde dann gerne die grenze beim board also nicht beim hack - auch auf ne minute setzen - damit beides halt übereinstimmt :wink:

Verfasst: 26.01.2003 23:54
von PhilippK
Dann ändere folgendes in der includes/page_header.php ab:

Code: Alles auswählen

	$sql = "SELECT u.username, u.user_id, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_ip
		FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s
		WHERE u.user_id = s.session_user_id
			AND s.session_time >= ".( time() - 300 ) . "
			$user_forum_sql
		ORDER BY u.username ASC, s.session_ip ASC";
in

Code: Alles auswählen

	$sql = "SELECT u.username, u.user_id, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_ip
		FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s
		WHERE u.user_id = s.session_user_id
			AND s.session_time >= ".( time() - 60 ) . "
			$user_forum_sql
		ORDER BY u.username ASC, s.session_ip ASC";
.

Ggf. musst du auch die Abfragen in der viewonline.php:

Code: Alles auswählen

$sql = "SELECT u.user_id, u.username, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_time, s.session_page, s.session_ip
	FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s
	WHERE u.user_id = s.session_user_id
		AND s.session_time >= ".( time() - 300 ) . "
	ORDER BY u.username ASC, s.session_ip ASC";
und der admin/index.php:

Code: Alles auswählen

	$sql = "SELECT u.user_id, u.username, u.user_session_time, u.user_session_page, s.session_logged_in, s.session_ip, s.session_start 
		FROM " . USERS_TABLE . " u, " . SESSIONS_TABLE . " s
		WHERE s.session_logged_in = " . TRUE . " 
			AND u.user_id = s.session_user_id 
			AND u.user_id <> " . ANONYMOUS . " 
			AND u.user_session_time >= " . ( time() - 300 ) . " 
		ORDER BY u.user_session_time DESC";
und

Code: Alles auswählen

	$sql = "SELECT session_page, session_logged_in, session_time, session_ip, session_start   
		FROM " . SESSIONS_TABLE . "
		WHERE session_logged_in = 0
			AND session_time >= " . ( time() - 300 ) . "
		ORDER BY session_time DESC";
abändern (die 300 jeweils mit 60 ersetzen).

Gruß, Philipp

Verfasst: 27.01.2003 00:23
von siebenschlaefer
besten dank - scheint jetz alles überein zustimmen :wink: