Brauche unbedingt Hilfe von wem, bin schon am verzweifeln...

2Pac

Erfahrenes Mitglied
Hallo Leute!

Ich möchte auf meiner HP gerne die Besucher die gerade on sind zählen. Dazu habe ich folgendes Script benutzt:
<script language="php">
// die Datei, in die geschrieben werden soll
$datei = "http://gladiators.devils-alliance.de/phpseite/useronline.dat";
// erstelle Datei, falls sie nicht existiert
if (!file_exists($datei)) fclose(fopen($datei, "http://gladiators.devils-alliance.de/phpseite/useronline.dat"));
// Einlesen der Datei in ein Array (eine Zeile pro Arrayfeld)
$users = file($datei);

$gefunden = false;
// Anzahl der Einträge ermitteln
$anzahl_users = count($users);

// Datei zum Schreiben öffnen
$fp = fopen($datei, "http://gladiators.devils-alliance.de/phpseite/useronline.dat");

// Durchlaufen der Einträge
foreach($users as $user)
{
// in ein Array aufsplitten
$user = explode("|", $user);
// wenn der Eintrag älter als 5 Minuten (=300 Sekunden) ist...
if ($user[1]+300 < time())
{
// Anzahl der User um 1 verringern
$anzahl_users--;
// nächsten Schleifendurchlauf starten
continue;
}
// wenn der User schon eingetragen ist, dann...
elseif ($user[0] == $REMOTE_ADDR)
{
// ...aktuelle Zeit setzen
$user[1] = time();
// ...bestätigen, dass kein neuer Eintrag erforderlich ist
$gefunden = true;
}
// wieder in Zeichenkette umwandeln und Zeilenumbruch anfügen
$user = trim(implode("|", $user))."\n";

// in Datei schreiben
fputs($fp, $user);
}

// wenn der User noch nicht eingetragen ist...
if (!$gefunden)
{
// neuen Eintrag direkt in die Datei schreiben
fputs($fp, $REMOTE_ADDR."|".time()."\n");
// Anzahl der User um 1 erhöhen
$anzahl_users++;
}

// Datei schließen
fclose($fp);

// Ausgabe
echo "aktive User:".$anzahl_users;
</script>
So es klappt ja auch aber...
Die Zahl der Besucher steht immer auf 1 egal wieviele da drauf sind. Habs schon mit paar Kumpels übers ICQ geklärt das die da mal rauf gehn sollen und ich dann seh obs geht. Aber es will einfach nicht :(
 
Also wenn du's richtig kopiert hättest, würde es ja funktionieren ;) Übernimm einfach den Quelltext aus meinem Tutorial genau so, wie er da steht, dann klappt's auch. Du solltest höchstens anstatt $REMOTE_ADDR $_SERVER['REMOTE_ADDR'] schreiben. Hab's grade bei mir im LAN von drei verschiedenen Rechnern versucht, klappt einwandfrei.


reima
 
öhm soweit ich die sache sehe hast du dich bei
PHP:
$fp = fopen($datei, "http://gladiators.devils-alliance.de/phpseite/useronline.dat");
verhaspelt.
du gibts 2x die datei als parameter an. es sollte so gehen
PHP:
$fp = fopen($datei,w+);
 
Geht aber nicht!

Reima ich habe es haargenau kopiert und auch das umgeändert was du gesagt hast, aber es klappt nicht immer nur user:1 egal was ich mach. Auch die Variante von Hoellche hat nicht geklappt...
Ich krieg noch ne Krise...Ach übrigens wollt ich ja auch nen Counter installieren, einer mit Reloadsperre, das Script hab ich auch hier irgendwo aus nem Forum...Bei dem das selbe, immer Nur 1 angezeigt? Was ist das?? Aber bei Kumpels wird auch nur immer 1 angezeigt. Ne Datenbank brauch ich doch dafür nicht oder? Muss ich vielleicht noch etwas an der Datei useronline.dat machen? Bzw. beim Counter an den Datein Zahl.txt und IPlogger.txt... BITTEE HELFT MIR

MfG 2Pac
 
Dein Anfangsscript ist recht gut finde ich. Hat aber ein paar schlechte pasagen die meiner Meinung anders gelöst werden könnten. Aber ehe ich hier dein Script zu 30% umschreibe mach ich einfach C&P von meinem. Benutze ich selber.


useronline.php
PHP:
<?
// die Datei, in die geschrieben werden soll
$datei = "useronline.dat";
// erstelle Datei, falls sie nicht existiert
if (!file_exists($datei)) fclose(fopen($datei, "w"));
// Einlesen der Datei in ein Array (eine Zeile pro Arrayfeld)
$users = file($datei);

$gefunden = false;
// Anzahl der Einträge ermitteln
$anzahl_users = count($users);

// Datei zum Schreiben öffnen
$fp = fopen($datei, "w");

// Durchlaufen der Einträge
foreach($users as $user)
{
    // in ein Array aufsplitten
    $user = explode("|", $user);
    // wenn der Eintrag älter als 5 Minuten (=300 Sekunden) ist...
    if ($user[1]+300 < time())
    {
        // Anzahl der User um 1 verringern
        $anzahl_users--;
        // nächsten Schleifendurchlauf starten
        continue;
    }
    // wenn der User schon eingetragen ist, dann...
    elseif ($user[0] == $REMOTE_ADDR)
    {
        // ...aktuelle Zeit setzen
        $user[1] = time();
        // ...bestätigen, dass kein neuer Eintrag erforderlich ist
        $gefunden = true;
    }
    // wieder in Zeichenkette umwandeln und Zeilenumbruch anfügen
    $user = trim(implode("|", $user))."\n";

    // in Datei schreiben
    fputs($fp, $user);
}

// wenn der User noch nicht eingetragen ist...
if (!$gefunden)
{
    // neuen Eintrag direkt in die Datei schreiben
    fputs($fp, $REMOTE_ADDR."|".time()."\n");
    // Anzahl der User um 1 erhöhen
    $anzahl_users++;
}

// Datei schließen
fclose($fp);

// Ausgabe
echo $anzahl_users." User(s) online.";
?>
 
Sag mal willst du mich verarschen?

das ist haargenau der Quelltext den ich benutzt habe!bis auf das ich bei der datei useronline.dat das genaue verzeichnis auf dem server angegeben...

so weitere Lösungsvorschläge?? :D
 
das ding funzt ... zack aus basta. dann versorg dier ne ordenlichen webspace von allinkl.com und hub nich von einem webspace zum annern. ihr mit eurem minimalismus :-(
 
hallo??

ich hab ne .de domain also sag hier nix von webspace rumhubben!
Ok die de domain gehört mein kumpel und ich hab nur unter domain trotzdem isses .de!Und ich linke mit de.vu drauf. Wenns net glaubst das es net geht dann add mich im icq und ich geb dir den link und du kannst es selber ansehn!!
 
hast du der datei useronline.dat auch schreibrechte gegeben? chmod 777 ? :-)

ansonsten kann es durchaus an dem . de .vu redirect liegen... du solltest anstelle von "direkt" linken lieber einen header redirect machen ( header("location:h**p://bla"); ) .. um so fehler zu vermeiden... :-)
 
Jo genau das wars chmod666 :D aber der gute reima hats mir im icq mit auf den weg gegeben und nun gehts supi :D Trotzdem danke an alle die mir helfen wollten bzw. konnten...CYA 2Pac
 
Zurück