---
title: "who is online"
url: "https://www.typo3.net/d/26926-who-is-online"
source: "typo3.net"
tags: ["Allgemein","Frage","PHP"]
created: "2005-07-06"
last_reply: "2005-07-06"
replies: 0
solved: false
page: 1
pages: 1
lang: "de"
---

# who is online

Allgemein · 0 Antworten · gestartet 2005-07-06

## Eröffnungsbeitrag

**lexus_mod** · 2005-07-06 · [Beitrag #1](https://www.typo3.net/d/26926-who-is-online/1)

Hallo,

ich habe ein Script für eine who is online Abfrage welche auch Außerhalb von Typo3 Funktioniert.

Binde ich das Script in Typo3 ein mit:

#PHP Files
#tt_content.script >
tt_content.script = CASE
tt_content.script {

key.field = select_key
    whoisonline = PHP_SCRIPT_EXT
    whoisonline.file = fileadmin/whoisonline.php
}
passiert nichts keine Rückmeldung, weder fehler noch sonstiges, rein gar nichts.

Binde ich das Script mit "Standard PHP Script"
ein wird die IP des Webservers verwndet d.h. es ist immer ein User online ich brauche die IP der Users.

wie behebe ich das?

hir das Script:
**whoisonline.php**

<?php
// einbinden der Datei zum Zählen der Besucher, die Online sind
require 'user_online.php';

// diesen Besucher zählen
zaehle_besucher ($_SERVER['REMOTE_ADDR']);
?>

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>Titel der Seite</title>
</head>
<body>
<?php $anz_besucher = anzahl_besucher(); ?>
<p>Es
<?php if ($anz_besucher == 1) { ?>
ist
<?php } else { ?>
sind
<?php } ?>
im Moment <?php echo $anz_besucher ?> Besucher online.</p>
</body>
</html>

**user_online.php**
<?php
// zählt den aktuellen Besucher
function zaehle_besucher ($ident) {
  // hole die Liste
  $liste = hole_besucher_liste ();

// füge das aktuelle Identifikationskriterium mit aktuellem Datum hinzu
  $liste[$ident] = time ();

// schreibe die Liste
  schreibe_besucher_liste ($liste);
}
########
// holt die Liste aus einer Datei
function hole_besucher_liste () {
  // importiere die Konfiguration
  global $besucher_online_konfiguration;

// lese datei
  $zeilen = file ($besucher_online_konfiguration['datei']);

// fehler?
  if (!is_array ($zeilen)) {
    return array ();
  }

$ergebnis = array ();
  // gehe die Zeilen durch
  foreach ($zeilen as $zeile) {
    // trenne Identifikationskriterium von Zeitstempel
    list ($ident, $stempel) = explode ('|', $zeile, 2);
    // wenn Identifikationskriterium leer ist, dann übergehen
    if (empty ($ident)) {
      continue;
    }

// wenn stempel zu alt ist
    if ($stempel < time() - $besucher_online_konfiguration['zeitlimit']) {
      // übergehen
      continue;
    }

// füge zum Ergebnis hinzu
    $ergebnis[$ident] = (int)$stempel;
  }
  return $ergebnis;
}
#############
// schreibe die Liste zurück
function schreibe_besucher_liste ($liste) {
  // importiere die Konfiguration
  global $besucher_online_konfiguration;

$ergebnis = '';
  // gehe die Liste durch
  foreach ($liste as $ident => $stempel) {
    $ergebnis .= "$ident|$stempel\n";
  }

// öffne datei
  $datei = fopen ($besucher_online_konfiguration['datei'], 'w');

// Fehler?
  if (!is_resource ($datei)) {
    return false;
  }

// schreibe das ergebnis
  $cnt = fwrite ($datei, $ergebnis);

// fehler?
  if ($cnt === false) {
    fclose ($datei);
    return false;
  }

// schließe die Datei
  fclose ($datei);

// wir sind fertig
  return true;
}

###########
// gibt die Anzahl der Besucher zurück
function anzahl_besucher () {
  return count (hole_besucher_liste ());
}

#########
// Konfiguration
$besucher_online_konfiguration = array (
  // in welcher Datei soll es gespeichert werden
  'datei' => 'besucher_online.txt',
  // wie lange soll es dauern, bis ein Eintrag verfällt
  'zeitlimit' => 300 // 5 Minuten
);
?>

---

Quelle: „who is online“, typo3.net, https://www.typo3.net/d/26926-who-is-online
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
