Counter < Sonstiges < Hochschule < Informatik < Vorhilfe
|
Hallo,
ich habe schwierigkeiten mir (m)einem Counter.. und zwar würde ich gerne auf meiner Seite die Besucher zählen (nicht Aufrufe).. ich habe (früher) mal einen counter geschrieben, der echt super funktionierte und dann auf einmal nicht mehr (ich weiß nicht wirklich warum).. daraufhin hab ich dann mal was neues probiert:
[Dateianhang nicht öffentlich]
problem ist nur, dass der irgendwie nicht zählt, also der counter bleibt einfach stehen...
Kann mir jemand helfen??
Vielen Dank schonmal.
LG
pythagora
Dateianhänge: Anhang Nr. 1 (Typ: JPG) [nicht öffentlich]
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:29 Di 06.04.2010 | Autor: | felixf |
Moin pythagora,
> ich habe schwierigkeiten mir (m)einem Counter.. und zwar
> würde ich gerne auf meiner Seite die Besucher zählen
> (nicht Aufrufe).. ich habe (früher) mal einen counter
> geschrieben, der echt super funktionierte und dann auf
> einmal nicht mehr (ich weiß nicht wirklich warum)..
> daraufhin hab ich dann mal was neues probiert:
>
> [Dateianhang nicht öffentlich]
>
> problem ist nur, dass der irgendwie nicht zählt, also der
> counter bleibt einfach stehen...
das sieht eigentlich ganz ok aus. (Mal abgesehen von ein paar Problemen, die das ganze Programmdesign hat, sobald mehr als zwei Personen gleichzeitig auf deiner Seite sind.)
Kann es sein, dass das Programm keine Schreibrechte hat fuer die Datei? Versuch mal, eventuelle Fehler beim Schreiben des neuen Zaehlerstandes (und er IP-Adresse) abzufangen und (testweise) auszugeben.
LG Felix
|
|
|
|
|
Hi,
danke für die super-schnelle antwort
>
> das sieht eigentlich ganz ok aus. (Mal abgesehen von ein
> paar Problemen, die das ganze Programmdesign hat, sobald
> mehr als zwei Personen gleichzeitig auf deiner Seite
> sind.)
Ja, und da weiß ich leider auch nicht weiter :( kann ich da (in kurzform) was machen??
> Kann es sein, dass das Programm keine Schreibrechte hat
> fuer die Datei? Versuch mal, eventuelle Fehler beim
> Schreiben des neuen Zaehlerstandes (und er IP-Adresse)
> abzufangen und (testweise) auszugeben.
hört sich jetzt vielleicht komisch an, aber wie meinst du das mit dem abfangen??
LG
pythagora
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:49 Di 06.04.2010 | Autor: | felixf |
Huhu,
> danke für die super-schnelle antwort
bitte :)
> > das sieht eigentlich ganz ok aus. (Mal abgesehen von ein
> > paar Problemen, die das ganze Programmdesign hat, sobald
> > mehr als zwei Personen gleichzeitig auf deiner Seite
> > sind.)
>
> Ja, und da weiß ich leider auch nicht weiter :( kann ich
> da (in kurzform) was machen??
Ich weiss nicht, wie gut du dich in PHP auskennst, aber PHP hat eine eingebaute Session-Verwaltung. Du koenntest einfach schauen, ob die Session neu ist und dann den Counter erhoehen (und die Session dann als "nicht neu" markieren).
> > Kann es sein, dass das Programm keine Schreibrechte hat
> > fuer die Datei? Versuch mal, eventuelle Fehler beim
> > Schreiben des neuen Zaehlerstandes (und er IP-Adresse)
> > abzufangen und (testweise) auszugeben.
>
> hört sich jetzt vielleicht komisch an, aber wie meinst du
> das mit dem abfangen??
Also fopen() liefert FALSE zurueck, falls die Datei nicht geoeffnet werden konnte, und fwrite() gibt bei Fehlern ebenfalls FALSE zurueck (und ansonsten die Anzahl der geschriebenen Bytes). Mit ein paar if-Abfragen kannst du testen, ob so etwas passiert ist.
LG Felix
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 01:13 Di 06.04.2010 | Autor: | pythagora |
hi,
> Ich weiss nicht, wie gut du dich in PHP auskennst, aber PHP
> hat eine eingebaute Session-Verwaltung. Du koenntest
> einfach schauen, ob die Session neu ist und dann den
> Counter erhoehen (und die Session dann als "nicht neu"
> markieren).
aha, ok, kenne ich leider (noch) nicht... :(
> > > Kann es sein, dass das Programm keine Schreibrechte hat
> > > fuer die Datei? Versuch mal, eventuelle Fehler beim
> > > Schreiben des neuen Zaehlerstandes (und er IP-Adresse)
> > > abzufangen und (testweise) auszugeben.
> >
> > hört sich jetzt vielleicht komisch an, aber wie meinst du
> > das mit dem abfangen??
>
> Also fopen()
> liefert FALSE zurueck, falls die Datei nicht geoeffnet
> werden konnte, und
> fwrite()
> gibt bei Fehlern ebenfalls FALSE zurueck (und ansonsten die
> Anzahl der geschriebenen Bytes). Mit ein paar if-Abfragen
> kannst du testen, ob so etwas passiert ist.
ok
ich werde es morgen mal probieren..
danke soweit
LG
pythagora
|
|
|
|
|
Hallo,
ich hab das mit open und write versucht, kenne das aber gar nicht un weiß nicht wirklich, was ich damit machen soll :-(
Ich glaube so stimmt das nicht:
[Dateianhang nicht öffentlich]
Kann mir jemand helfen??
LG
pythagora
Dateianhänge: Anhang Nr. 1 (Typ: JPG) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:22 Do 08.04.2010 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
Hallo,
ich habe derweil noch mal ein bisschen rumprobiert, aber leider will es noch immer nicht funktionieren.. das Einsetzten von open und write geht leider nicht (ich kenne mich damit leider nicht sooo gut aus :( )
kann mir jemand helfen??
Vielen Dank
Pythagora
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:59 Do 08.04.2010 | Autor: | cycore |
hey,
ich kann dir nicht sicher sagen, woran dein code scheitert, falls es nicht die Dateiberechtigungen sind - wie bereits erwähnt wurde ist aber der ganze aufbau zweifelhaft^^
habe hier in den tiefen meiner ordner einen alten counter gefunden, der ähnlich funktioniert - vielleicht hilft dir das als anregung^^
1: |
| 2: | <?php
| 3: |
| 4: | $IPfilePath = "counter/ip_data.dat";
| 5: | $countFilePath = "counter/count.dat";
| 6: |
| 7: | $readErr = "Read error, contact Webmaster";
| 8: | $writeErr = "Write error, contact Webmaster";
| 9: |
| 10: | $hitMessage ="Besucher:";
| 11: |
| 12: |
| 13: | $IPnum = "0.0.0.0";
| 14: | $userStatus = 0;
| 15: |
| 16: | $IPnum = getenv("REMOTE_ADDR");
| 17: |
| 18: | $IPlist = @fopen($IPfilePath, "r") or die($readErr);
| 19: | $IPdata = fread($IPlist,filesize($IPfilePath));
| 20: | fclose($IPlist);
| 21: |
| 22: | $IParray = explode(" ",$IPdata);
| 23: |
| 24: | $userStatus = 0;
| 25: | foreach ($IParray as $value)
| 26: | {
| 27: | if($value == $IPnum){
| 28: | $userStatus = 1;
| 29: | }
| 30: | }
| 31: |
| 32: |
| 33: | if($userStatus == 0){
| 34: | $IPfile = @fopen($IPfilePath, "a") or die ($writeErr); // Write the new IP to ip_data.dat
| 35: | @fwrite($IPfile, " $IPnum") or die($writeErr);
| 36: | fclose($IPfile);
| 37: |
| 38: | $incCount = @fopen($countFilePath, "r") or die ($readErr);
| 39: | $theCount = fread($incCount, filesize($countFilePath));
| 40: | $theCount++;
| 41: | fclose($incCount);
| 42: |
| 43: | $incCount = @fopen($countFilePath, "w") or die ($readErr);
| 44: | @fwrite($incCount, $theCount) or die ($writeErr);
| 45: | fclose($incCount);
| 46: | }
| 47: |
| 48: | elseif($userStatus == 1){
| 49: | $incCount = @fopen($countFilePath, "r") or die ($readErr);
| 50: | $theCount = fread($incCount, filesize($countFilePath));
| 51: | fclose($incCount);
| 52: | }
| 53: |
| 54: | $kcount = "$hitMessage $theCount";
| 55: | ?>
|
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:03 Fr 09.04.2010 | Autor: | pythagora |
Hey,
ich danke dir für deine Mühe, werde mir das mal anschauen und weiterbasteln..
LG
pythagora
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:32 Fr 09.04.2010 | Autor: | felixf |
Moin,
hier kannst du noch ein break einbauen, sobald du die IP gefunden hast:
1: | foreach ($IParray as $value)
| 2: | {
| 3: | if($value == $IPnum){
| 4: | $userStatus = 1;
| 5: | }
| 6: | }
|
Dein Counter hat (neben den Ueberschreib-Problemen, die der andere Counter schon hat) das Problem, dass die IP-Datei regelmaessig geloescht werden sollte, damit sie nicht zu gross (und der Counter damit zu lahm) wird.
Das beste ist vermutlich, das ganze ueber Sessions zu loesen, etwa so:
1: | <?php
| 2: | session_start();
| 3: |
| 4: | $countFile = @fopen("counter.txt", "r");
| 5: | $counter = intval(fgets($countFile));
| 6: | fclose($countFile);
| 7: |
| 8: | if (!isset($_SESSION['counter_was_here']))
| 9: | {
| 10: | $_SESSION['counter_was_here'] = 1;
| 11: | ++$counter;
| 12: | $countFile = @fopen("counter.txt", "w");
| 13: | @fwrite($countFile, $counter);
| 14: | fclose($countFile);
| 15: | }
| 16: |
| 17: | echo $counter;
| 18: | ?>
|
LG Felix
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:40 Fr 09.04.2010 | Autor: | cycore |
hehe...du glaubst nich wirklich das ich den noch verwende...der is geschätzte 6/7 jahre alt^^hab ihn unverändert gepostet...das break müsste nicht unbedingt sein, wenn man die ohnehin optimierte fct. in_array verwendet ;)
wenn ich mich recht erinnere hab ich damals die ipdatei regelmäßig selbst gelöscht hehe
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:07 Fr 09.04.2010 | Autor: | felixf |
Moin,
> hehe...du glaubst nich wirklich das ich den noch
> verwende...
das hatte ich gehofft Aber es haette sein koennen, dass jemand anders ihn verwenden will.
> der is geschätzte 6/7 jahre alt^^hab ihn
> unverändert gepostet...das break müsste nicht unbedingt
> sein, wenn man die ohnehin optimierte fct. in_array
> verwendet ;)
Ja, das waer noch besser.
> wenn ich mich recht erinnere hab ich damals die ipdatei
> regelmäßig selbst gelöscht hehe
Ok :)
LG Felix
|
|
|
|