Zum Inhalt springen

anzahl angemeldeter fe user ermitteln

Erstellt am 9. Oktober 2006 · 7 Antworten · letzte Antwort am 22. Mai 2009

Tags: Frontend-Benutzer, Frage

triskal ·

hallo,

wie kann ich am sinnvollsten die anzahl der aktuell angemeldeten user meiner seite ermitteln? inwiefern ist hierzu das is_online feld der tabelle fe_users hilfreich?

habe leider keinen beitrag zum thema gefunden. sollte es doch einen geben, dann verlinkt mich einfach.

danke und gruss, manuel

FordPrefect ·

Hi,

setzte doch einfach einen Frontenlogin um und logge dich als FE_User ein und prüfe den Wert der Spalte. Dann log dich wieder aus und prüfe wiederum den Wert, dann siehst du ob du darüber die Anzahl der User ermitteln kannst.

Grüsse

Ford

triskal ·

hi und danke für eure antworten!

@fordprefect: deinen vorschlag hatte ich im vorfeld bereits mit folgendem eingebundenen php-skript getestet:

<?php

  $timestamp = time()-100;

  $qu = "SELECT is_online FROM fe_users";
  $result = mysql_query($qu);

  $count = 0;

  while ($row = mysql_fetch_array($result)) {
    $online = $row['is_online'];
    if($online >= $timestamp) {
      $count++;
    }
  }

  echo('Spieler online: '.$count);

?>

das funktioniert soweit auch. aber es ist eben in einer bestimmten seite platziert. demnach wird das skript ausgeführt, wenn ich die entsprechende seite anwähle. an dieser stelle hätte ich die frage, wie ich das ergebnis dieses skripts durch einen marker im template anspringen kann, so dass es permanent in einem, sagen wir infobereich der seite, angezeigt wird.

@just2b: die extensions sind IMO ohnehin die bessere variante. nun habe ich die kh_usersonline installiert, allerdings die verständnisfrage, wie genau ich die daten auf meiner seite anzeige. hierzu habe ich einen marker ###ONLINE### in meiner designvorlage vorgesehen und spreche ihn im template wie folgt an:

seite {
  ...
  10.subparts.usersonline =< plugin.tx_khusersonline_pi1

  10.marks {
    ...

    ONLINE = TEXT
    ONLINE {
      plugin.tx_khusersonline_pi1 {
        # To get this plugin working just type in your
        # template 'page.10 =< plugin.tx_khusersonline_pi1'.
        # In 'text' and 'text.lang.xx' you can use
        # ###GUESTS###, ###MEMBERS###, ###ALLUSERS###
        # and ###USERTEXT###.
        text {
          Spieler Online: ###ALLUSERS###
        }
        allusers {
          USER = Visitor|Visitors
          USER.lang.de = Besucher|Besucher
        }
      timeout = 5
      }
  ...
    }
  }

aber so scheints jedenfalls schon mal nicht zu gehen. wo genau liegt mein fehler? im manual sind die angaben um text zb mit runden klammern '(' umklammert. welche sind richtig? geschweifte '{' oder runde '('?

danke für eure hilfe!
gruss, manuel

triskal ·

also, für so schlau, beide varianten auszutesten aber nur eine zu posten, solltest du mich schon halten... 😉

es funktionieren weder die runden noch die geschweiften. da scheint ein grundsätzlicher fehler in meiner herangehensweise zu liegen. hat denn noch niemand diese extension an den start gekriegt?

danke und gruss, manuel

Sevi ·

Hallo!

Ich weis nicht inwiefern dieses Thema noch aktuell ist, aber ich wollte nur kurz mitteilen wie's bei mir läuft:

Im TypoScript Setup:

plugin.tx_khusersonline_pi1 = USER_INT
plugin.tx_khusersonline_pi1 {

  text (
    In the moment there ###IS### ###GUESTS### ###GUEST###<br />
    and ###MEMBERS### ###MEMBER### online.
  )
  text.lang.de (
    Es ###IS### momentan ###MEMBERS### ###MEMBER### und ###GUESTS### ###GUEST### online.
  )

  wordArray {
    guests {
      GUEST = guest|guests
      GUEST.lang.de = Gast|Gäste
      IS = is|are
      IS.lang.de = ist|sind
    }
    members {
      MEMBER = User|Users
      MEMBER.lang.de = Benutzer|Benutzer
    }
    allusers {
      USER = Visitor|Visitors
      USER.lang.de = Besucher|Besucher
    }
    max_allusers {
      MAXUSER = Visitor|Visitors
      MAXUSER.lang.de = Besucher|Besucher
    }
  }
  
  timeout = 5
}

und dann etwas weiter unten das Plugin in den Template-Marker laden:

page.10 = TEMPLATE
page.10 {
	# File spezifizieren
	template = FILE
	template.file = fileadmin/templates/template.html
	
	# Loginbox
	marks.LOGINBOX < plugin.tx_newloginbox_pi1
	
	# Users online
	marks.ONLINE < plugin.tx_khusersonline_pi1
	
	# Sprachauswahl
	marks.LANGUAGE = PHP_SCRIPT 
	marks.LANGUAGE.file = fileadmin/templates/myLanguageMenu.php
	
	# Navi
	marks.NAVI < temp.navi
	
	# Titel
	marks.TITLE = TEXT
	marks.TITLE.field = title
	
	# Content
	marks.CONTENT < styles.content.get
}

Hoffe damit geholfen zu haben und wünsche noch einen schönen Nachmittag!

yahooooo ·
triskal schrieb

hi und danke für eure antworten!

@fordprefect: deinen vorschlag hatte ich im vorfeld bereits mit folgendem eingebundenen php-skript getestet:

<?php

  $timestamp = time()-100;

  $qu = "SELECT is_online FROM fe_users";
  $result = mysql_query($qu);

  $count = 0;

  while ($row = mysql_fetch_array($result)) {
    $online = $row['is_online'];
    if($online >= $timestamp) {
      $count++;
    }
  }

  echo('Spieler online: '.$count);

?>

das funktioniert soweit auch. aber es ist eben in einer bestimmten seite platziert. demnach wird das skript ausgeführt, wenn ich die entsprechende seite anwähle.
danke für eure hilfe!
gruss, manuel

Hi Manuel,
ich bin gerade zufällig über diesen Beitrag gestolpert und hätte einen Verbesserungsvorschlag für das PHP-Script. Das Ganze könnte man auch über ein etwas ausgefeilteres SQL-Statement erreichen:

  $qu = "SELECT count(ses_userid) FROM fe_sessions WHERE ses_tstamp >=(CURRENT_TIMESTAMP-100)";

(ungetestet)

Aber das dürfte ja mittlerweile eh egal sein. Ist ja schon ne Weile her.