Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Counter... was mach ich falsch ??“

S

s0xtech

Guest

hi
ich wollt mir nen counter bauen, weis aber nicht was ich falsch mache, die seite bleibt weiß... er soll so sein, er speichert die ip in die db und der soll denn zählen wieviele leute schon da waren ;)

PHP:
<?php
include('datenbank.php');
$query = 'SELECT * FROM ip_counter'; 
$result = mysql_query($query) or die('Query failed: ' . mysql_error()); 

while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
$ip = $line["ip"];

if ($ip == $REMOTE_ADDR)
{
echo " Es waren hier schon ".$menge." Besucher";
}
else
{
$sql = "INSERT INTO ip_counter (id, ip) VALUES ('', '$ipadresse')";
$sqlresult = mysql_query($sql) or die('Query failed: ' . mysql_error()); 
}
$sqlmenge = "SELECT id FROM ip_counter";
$mengeresult = mysql_query($sqlmenge) or die('Query failed: ' . mysql_error()); 
$menge = mysql_num_rows($mengeresult) or die('Query failed: ' . mysql_error()); 
echo " Es waren hier schon ".$menge." Besucher";
}
?>
 
D

DocUhu

Guest

AW: Counter... was mach ich falsch ??

Das ergibt keinen Sinn, alle IP's in die Datenbank zu speichern, es sei denn Du willst eine IP-Adresse für einen bestimmten Zeitraum sperren.

Für das was Du da gemacht hast, reicht eine *.txt Datei vollkommen aus und selbst in der brauchste nicht alle IPs zu speichern, da brauchste nur einen Zähler ablegen und bei jedem Besucher um 1 erhöhen


Wenn Du dennoch auf Deine Variante nicht verzichten willst, die Reihenfolge der Anweisungen und Festlegung der Variablen beachten... immer schon eins nach dem anderen...

Die Spalte 'id', ist die auto_increment? Wenn ja, solltest Du die bei Deinem INSERT weglassen
 
Zuletzt bearbeitet von einem Moderator:
S

s0xtech

Guest

AW: Counter... was mach ich falsch ??

ja aber wenn denn jemand aktualisiert, denn zählt der das auch... wie mach ich denn ne ipsperre für 24h rein mit ner txt ??
 
D

DocUhu

Guest

AW: Counter... was mach ich falsch ??

Mit IP-Sperre für 24h würde ich dann schon mit MySql machen, dann müsstest Du allerdings Deine Tabelle noch ein wenig anders aufbauen.


Tabelle: ip | zeit
ip sollte unique sein


1: "zeit" kannste in php via time() ermitteln
2: INSERT IGNORE INTO (ip und zeit eintragen)
3: DELETE (alles löschen was älter als 24 Stunden ist)
4: COUNT() (Datensätze zählen)
5: Ergebnis aus 4 ausgeben

Wenn Dir das zu wenig ist, was ich geschrieben habe -> Counter über Google suchen

Grüße

P.S. Hab mein o. Posting eben noch editiert
 

blackout

Schaf im Wolfspelz

AW: Counter... was mach ich falsch ??

Der Standard-Zeitintervall für einen UniqueVisitor ist eigentlich 30 Minuten, 24 Stunden sind da schon etwas übertrieben
 
D

DocUhu

Guest

AW: Counter... was mach ich falsch ??

Ups, sehe gerade, dass 2 und 3 vertauscht sind... also erst löschen dann einfügen

@blackout: stimme ich zu ;)
 

Flashede

Mediengestalter

AW: Counter... was mach ich falsch ??

Ich habe ein Counter mit IP-Sperre in selfphp_4.2 gefunden, das müßte dein Problem lösen.


Diese IP-Sperre ermöglicht es Ihnen den jeweiligen Besucher lediglich ein einziges mal pro Besuch zu registrieren und zwar für eine festgelegte Zeit. Natürlich stellt dies keinen absoluten Schutz vor Refresh Aufrufen dar, aber immer hin lässt sich hiermit der Besucherzähler wesentlich sinnvoller betreiben.

Das erforderliche Skript zur Umsetzung des Counters stellt sich, wie folgt dar:


<?

/////////////////////////////////////////
// Counter + Reloadsperre v1.0
/////////////////////////////////////////

// 0=keine Reloadsperre, 1=Reloadsperre
$aktiv = 1;
// Zeit der Reloadsperre in Minuten
$zeit = 1;
// IP-Datei
$ipdatei = "ips.txt";
// Counterdatei
$datei = "counter.txt";
// Anzahl der führenden Nullen
$stellen = 5;
// Festlegen der Bild-Dimensionen
$breite="15";
$hoehe="19";

/////////////////////////////////////////
// IP-Reloadsperre
/////////////////////////////////////////

function pruf_IP($rem_addr) {
global $ipdatei,$zeit;
@$ip_array = file($ipdatei);
$reload_dat = fopen($ipdatei,"w");
$this_time = time();
for ($i=0; $i<count($ip_array); $i++) {
list($ip_addr,$time_stamp) = explode("|",$ip_array[$i]);
if ($this_time < ($time_stamp+60*$zeit)) {
if ($ip_addr == $rem_addr) {
$gefunden=1;
}
else {
fwrite($reload_dat,"$ip_addr|$time_stamp");
}
}
}
fwrite($reload_dat,"$rem_addr|$this_time\n");
fclose($reload_dat);
return ($gefunden==1) ? 1 : 0;
}

/////////////////////////////////////////
// Counter-Abfrage
/////////////////////////////////////////

if (file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($REMOTE_ADDR)==0))) {
// Falls die Datei existiert, wird sie ausgelesen und
// der dort enthaltene Wert um Eins erhöht.
$fp=fopen($datei,"r+");
$zahl=fgets($fp,$stellen);
$zahl++;
rewind($fp);
flock($fp,2);
fputs($fp,$zahl,$stellen);
flock($fp,3);
fclose($fp);
}else if (!file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($REMOTE_ADDR)==0))) {
// Die Datei counter.txt existiert nicht, sie wird
// neu angelegt und mit dem Wert 1 gefüllt.
$fp=fopen($datei,"w");
$zahl="1";
fputs($fp,$zahl,$stellen);
fclose($fp);
} else {
// Die Datei existiert zwar, jedoch handelt
// es sich wahrscheinlich um den gleichen Besucher
$fp=fopen($datei,"r");
$zahl=fgets($fp,$stellen);
fclose($fp);
}

$zahl=sprintf("%0".$stellen."d",$zahl);

?>




Wie Sie sehen setzt sich diese Lösung ähnlich zusammen, wie der Text- bzw. Grafikcounter. Es ist lediglich eine Funktion pruf_IP() hinzugekommen, die Sie in die Lage versetzt die jeweilige IP-Adresse des Besuchers und die Besuchszeit zu speichern. Hierzu wird eine Textdatei ips.txt angelegt, in dieser befinden sich sämtliche Besucher-IPs samt Besuchszeiten. Die Reloadsperre ist für jeden Besucher 1 Minute lang aktiv, dies lässt sich mit Hilfe der Variablen $zeit natürlich ohne weiteres raufsetzen. Die durch die Funktion erzeugten Einträge innerhalb der ips.txt Datei setzen sich, wie folgt zusammen ipadresse|besuchszeit.


Beispiel - Zeile aus der ips.txt Datei

127.0.0.1|1075942181

Die Counter-Abfrage als auch die Ausgabeformatierung sind in Ihren wesentlichen Bestandteilen identisch mit den vorherigen Lösungen. Der Aufruf des Counters kann anschliessend aus jedem beliebigen PHP-Skript Ihrer Website erfolgen und zwar, wie folgt:


Beispiel - Textcounter



<?php

include("counter.php");
echo "<font face=Arial color=blue size=5>$zahl</font>";

?>





Beispiel - Grafikcounter



<?php

include("counter.php");

// Hier wird dann der Zähler aus Bildern zusammengesetzt
for($i=0;$i<$stellen;$i++){
$bild_counter=$bild_counter . "<img src=bilder/" . substr($zahl,$i,1) . ".gif align=absmiddle width=$breite height=$hoehe>";
}

echo $bild_counter;

?>




Tipp: Nehmen Sie sich genügend Zeit um sich mit der IP-Sperre zu befassen. Diese Funktion kann Ihnen auch für weitere Anwendungen, wie beispielsweise bei einem Gästebuch nützliche Dienste erweisen, um doppelte Einträge zu vermeiden.


Quelle: selfphp_4.2
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.189
Beiträge
2.582.078
Mitglieder
67.258
Neuestes Mitglied
SaschMasch1312
Oben