Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2003 Teil von Mai

SELFHTML Forumsarchiv
Counter mit reloadsperre (aber nur für begrenzte zeit)

Informationsseite
  1. Seite (PHP) Counter mit reloadsperre (aber nur für begrenzte zeit) von Patrick, 31. 05. 2003, 18:12
nach unten

Counter mit reloadsperre (aber nur für begrenzte zeit)

Die folgende Nachricht zum Thema stammt von: Patrick, 31. 05. 2003, 18:12

Hallo,

ich habe mir einen Counter programmiert mit einer reloadsperre. das prob ist wenn ein user einmal drauf war wird er erst wieder gezählt wenn ein anderer drauf war. wie kann ich es machen das die sperre nach einer zeit aufgehoben wird für den user?

mein script sieht mommentan so aus:

<?php
include("../db.inc.php");

$anzahl_hits = $datensatz[num_visits];
$last_ip = $datensatz[last_ip];

$remote = $REMOTE_ADDR;

if ($remote == $last_ip) {
 //Hit wird nicht gezaehlt
} else {
 $new_hit = $anzahl_hits + 1;

 mysql_connect("localhost", "$benutzer", "$passwort");
 mysql_select_db("$db");
 $sql = "UPDATE sd_models set last_ip = \"$remote\",num_visits = \"$new_hit\" WHERE user = '$user'";
 $result = mysql_query($sql);
 mysql_close();
  }

//Hits anzeigen
 echo "<b>SedCard aufrufe: $datensatz[num_visits]</b>";
?>

mfg,
Patrick

nach obennach unten

Counter mit reloadsperre (aber nur für begrenzte zeit)

Die folgende Nachricht zum Thema stammt von: David Tibbe, 31. 05. 2003, 18:20

Hallo

Du speicherst noch dir Uhrzeit (zB in Form eines Timestamps) mit. Dann überprüfst du vor dem Zählen die verstrichene Zeit. Ist es genug, so zähle erneut, ansonsten halt nicht.
Aber die Diskussion "Ist ein Counter sinnvoll" hatten wir wohl schon zu genüge :)

Grüße
  David

--
>>Nobody will ever need more than 640k RAM!<<
1981 Bill Gates

nach obennach unten

Counter mit reloadsperre (aber nur für begrenzte zeit)

Die folgende Nachricht zum Thema stammt von: Matze Rolf, 31. 05. 2003, 18:20

Das einfachste ist, du platzierst ein Cookie mit spezifischer Lebensdauer, z.B. 15min. Ist das Cookie bereits vorhanden, lässt du den Zähler nicht klingeln - ist keins vorhanden wird der Aufrufer als neuer Besucher gewertet und du lässt den Counter rasseln.
Grüße...

nach obennach unten

Counter mit reloadsperre (aber nur für begrenzte zeit)

Die folgende Nachricht zum Thema stammt von: Christian Seiler, 31. 05. 2003, 18:33

Hallo Patrick,

»» ich habe mir einen Counter programmiert mit einer reloadsperre. das prob ist wenn ein user einmal drauf war wird er erst wieder gezählt wenn ein anderer drauf war. wie kann ich es machen das die sperre nach einer zeit aufgehoben wird für den user?

Du musst alle IPs und den jeweils aktuellen Zeitstempel in einer Liste speichern. Du könntest zum Beispiel eine Datenbank haben, die eine Tabelle mit folgenden Feldern besitzt: IP-Adresse, Zeitstempel

Sobald jemand auf den Counter zugreift, passiert folgendes:

- Alle veralteten Einträge rauswerfen (d.h. wo der Zeitstempel der Einträge kleiner als aktueller Zeitstempel minus x Minuten ist) - das geht wunderbar mit einem bedingten DELETE
- Nachsehen, ob die aktuelle IP bereits vorhanden ist
- Falls ja: einfach den Counter ausgeben
- Falls nein: die IP mit aktuellem Zeitstempel hinzufügen, Counter um eins erhöhen und dann erst den Counter ausgeben

Also in Pseudo-PHP-Code:

loesche_alte_eintraege ();

if (!aktuelle_ip_schon_vorhanden ()) {
  fuege_aktuelle_ip_ein ();
  erhoehe_counter();
}

gebe_counter_aus();

Über Sinn und Unsinn eines Counters wurde schon sehr häufig diskutiert.

Viele Grüße,
Christian


--
http://www.christian-seiler.de/projekte/php/bbcode/

nach obennach unten

Counter mit reloadsperre (aber nur für begrenzte zeit)

Die folgende Nachricht zum Thema stammt von: patrickn, 31. 05. 2003, 19:30

Hallo,
wollte es jetzt mit einem cookie machen.

funzt nur nicht. es wird jetzt immer gezählt.

wo ist der fehler??

<?php
include("../db.inc.php");

$anzahl_hits = $datensatz[num_visits];
//$last_ip = $datensatz[last_ip];

$remote = $REMOTE_ADDR;

if ($remote == $last_ip) {
 //Hit wird nicht gezaehlt
} else {
 @setcookie( "last_ip", $remote, time()+900, "/", 0);

 $new_hit = $anzahl_hits + 1;

 mysql_connect("localhost", "$benutzer", "$passwort");
 mysql_select_db("$db");
 $sql = "UPDATE sd_models set last_ip = \"$remote\",num_visits = \"$new_hit\" WHERE user = '$user'";
 $result = mysql_query($sql);
 mysql_close();
  }

//Hits anzeigen
 echo "<b>SedCard aufrufe: $datensatz[num_visits]</b>";
?>

mfg,
Patrick

nach obennach unten

Counter mit reloadsperre (aber nur für begrenzte zeit)

Die folgende Nachricht zum Thema stammt von: Philip, 31. 05. 2003, 20:00

»» Hallo,
Hi


Ich bediene mich jetzt auch einfach mal dem "Pseudo-PHP-Code":

if(!cookie_ist_gesetzt()) {
  setze_cookie();
  zähler_plus_eins();
}

zeige_counter();


»» mfg,
»» Patrick
Philip


--
http://www.metrox.de

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2003 Teil von Mai

© 1998-2006 Seite Impressum, Software: Classic Forum