php problem mit wer ist online etc...

A

alex

Guest
hi also ich habe eine Onlinestatistik bei mir eingebaut mit folgendem code:
CODE
<?php
// wie lange gilt wird eine ip nicht als neuer besucher gewertet (in minuten)
$t_counter=120;
// wie lange gilt besucher als online (in minuten)
$t_user_online=20;
// pfad zum besucherzaehler
$p_counter='counter.log';
// pfad zur datei, die maximale zahl gleichzeitiger nutzer speichert
$p_counter_max='counter_max.log';
// pfad zur datei, die die ips des besucherzaehlers speichert
$p_ips_counter='ips_counter.log';
// pfad zur datei, die die ips der aktuell auf der seite befindlichen user speichert
$p_ips_user_online='ips_user_online.log';

// nicht vorhandene dateien erstellen
// wenn dateien vorhanden sind und skript einwandfrei laeuft, dann diese zeilen auskommentieren (// davor)
if (!file_exists($p_counter))
{ $fh=fopen($p_counter, 'w'); fwrite($fh, "0"); fclose($fh); }
if (!file_exists($p_counter_max))
{ $fh=fopen($p_counter_max, 'w'); fwrite($fh, time().'#0'); fclose($fh); }
if (!file_exists($p_ips_counter))
{ $fh=fopen($p_ips_counter, 'w'); fclose($fh); }
if (!file_exists($p_ips_user_online))
{ $fh=fopen($p_ips_user_online, 'w'); fclose($fh); }

// daten einlesen
$temp=file($p_counter); $counter=$temp[0];
$temp=file($p_counter_max); $counter_max=explode('#', $temp[0]);
$ips_counter=file($p_ips_counter);
$ips_user_online=file($p_ips_user_online);
$ip=$_SERVER['REMOTE_ADDR'];

// user online - noch gueltige ips raussuchen
$i=0; $j=0; $ip_exists=0;
while ($i < count($ips_user_online))
{
$temp=explode('#', trim($ips_user_online[$i]));
if (time() < $temp[0]+$t_user_online*60)
{
$ips[$j]=$ips_user_online[$i]; $j++;
// wenn ip des aktuellen besuchers gefunden, dann vermerken
if ($temp[1]==$ip) { $ip_exists=1; }
}
$i++;
}
// wenn aktuelle ip nicht gefunden wurde ($ip_exists==0) oder alle entsorgt wurden, dann diese hinzufuegen
if (!isset($ips) && $ip_exists==1 || $ip_exists==0)
{ $ips[$i]=time().'#'.$ip; }
// anzahl felder von $ips entspricht anzahl der user online
$user_online=count($ips);
// wenn aktuelle zahl besucher groesser als letztes maximum, dann ueberschreiben und neu einlesen
if ($user_online>$counter_max[1])
{
$fh=fopen($p_counter_max, 'w');
fwrite($fh, time().'#'.$user_online);
fclose($fh);
$temp=file($p_counter_max); $counter_max=explode('#', $temp[0]);
}
// die ips speichern
$fh=fopen($p_ips_user_online, 'w');
fwrite($fh, join("\n", $ips));
fclose($fh);

// besucherzaehler - noch gueltige ips raussuchen
$i=0; $j=0; $ip_exists=0;
while ($i < count($ips_counter))
{
$temp=explode('#', trim($ips_counter[$i]));
if (time() < $temp[0]+$t_counter*60)
{
$ips[$j]=$ips_counter[$i]; $j++;
// wenn ip des aktuellen besuchers gefunden, dann vermerken
if ($temp[1]==$ip) { $ip_exists=1; }
}
$i++;
}
// wenn aktuelle ip nicht gefunden wurde ($ip_exists==0) oder alle entsorgt wurden, dann diese hinzufuegen
if (!isset($ips) && $ip_exists==1 || $ip_exists==0)
{
$ips[$i]=time().'#'.$ip;
$counter++;
$fh=fopen($p_counter, 'w');
fwrite($fh, $counter);
fclose($fh);
}
// die ips speichern
$fh=fopen($p_ips_counter, 'w');
fwrite($fh, join("\n", $ips));
fclose($fh);

// ausgabe der besucherdaten
echo 'Es sind '.$user_online.' Nutzer online.<br>';
echo 'Sie sind Besucher Nr.'.$counter.'<br>';
echo 'Max. User online waren'.date("d.m.Y", $counter_max[0]).' mit '.$counter_max[1].;
?>


das problem ist in dreamweaver zeigt er mir in der dabell in der ich ihn eingefügt habe nichts an (nur das php zeichen) wenn ich dann aber auf dem webserver die domain aufrufe sehe ich nur den code und nicht das was er eigentlich zeigen soll
sad.gif

ich muss dazu sagen das keine der dateien wie conter.log vorhanden sind da sie ja vom program erstellt werden falls nicht vorhanden...
Wär cool wenn mir einer eine Lösung geben könnte, danke schonmal mfg alex
 
Hi,

Wenn nur der Quelltext im Browserfenster erscheint, hat es irgendwo eine Fehler im Code, der das Skript am erfolgreichen ausführen hindert (fehlende Log-Dateien!!), und/oder das php-File wird gar nicht vom Server interpretiert, sondern direkt an den Browser gesendet. (evtl. fehlende PHP-Unterstützung)

Du solltest das vielleicht mal überprüfen...

greats,

S.B
 
Ich habe deinen Code mal in meinem Editor eingefügt (ist php fähig )
dabei wurde dieser teil rot markiert

$fh=fopen($p_counter_max, 'w');
fwrite($fh, time().'#'.$user_online);
fclose($fh);
$temp=file($p_counter_max); $counter_max=explode('#', $temp[0]);
}
// die ips speichern
$fh=fopen($p_ips_user_online, 'w');
fwrite($fh, join("\n", $ips));
fclose($fh);

// besucherzaehler - noch gueltige ips raussuchen
$i=0; $j=0; $ip_exists=0;

in der Preview sehe ich dan nur den code wie Du auf dem Server.

Achte darauf das die richtigen Rechte auf den Log files gesetzt sind.
Empfehle für jedes ein lehres file erstellen und hochladen.
 
ok ich habe die log dateien hochgeldaden und siehe da es geht nur kommt jetz bei der ausgabe bei jedem sowas :
Warning: fopen(counter.log) [function.fopen]: failed to create stream: Permission denied in /home/www/htdocs/sei-reich.de/index.php on line 174

Warning: fwrite(): supplied argument is not a valid stream resource in /home/www/htdocs/sei-reich.de/index.php on line 174


Obwohl ich die attribute auf read write und exec bei owner und public... gesetzt habe?

Was denn nun noch
 
Nur als Mahnung: bitte keine grossen Quelltexte, sondern nur relevante Ausschnitte posten!
 
QUOTE (alex @ Fr 5.11.2004, 12:41)
Warning: fopen(counter.log) [function.fopen]: failed to create stream: Permission denied in /home/www/htdocs/sei-reich.de/index.php on line 174

Warning: fwrite(): supplied argument is not a valid stream resource in /home/www/htdocs/sei-reich.de/index.php on line 174



Diese fehler meldungen sprechen aber ganz deutlich
setze die Rechte auf 777 und versuche es nochmal.
Die fehlermeldung ist klar Permission denied in
schau welches file in zeile 74 angesprochen werden soll den das macht Dir noch probleme
 
ja ich habs hinbekommen es war so das keine logdateien entstanden die endung der log dateien wurde nämlich ein .txt hinzugefügt, das hab ich dann im script noch bei den variablen geaddet und dann gings einwandfrei bis auf das das er meine schriftart nicht übernimmt:
CODE '<font color="#FFFFFF" size="2" face="Verdana">"Es sind '.$user_online.' Nutzer online.<br>"</font>';

wenn ich das face=... weglasse werden size und color übernommen, füge ich face hinzu nimmt er alle drei nicht an, warum?
 
QUOTE (nullpointer @ Fr 5.11.2004, 22:31) Verwende besser ein StyleSheet. <font> ist hoffnungslos veraltet..
Dreamweaver und Frontpage lässt grüssen..

Nein, wircklich solche Tags verschwenden nur (speicher)platz und sind auch mühsam.. sehr mühsam !
 
Zurück
Oben