online counter macht Probleme

  • #1
C

cultsibi

Bekanntes Mitglied
Themenersteller
Dabei seit
19.03.2005
Beiträge
64
Reaktionspunkte
0
Das hier ist mein onlinecounter, der die Besucher der letzen 5min anzeigen soll
Doch irgendwo muss ich einen Denkfehler gemacht haben, da er nicht ganz richtig funktioniert.
Immer, wenn sich eine IP länger als 5min auf der Seite aufhält wird nach den 5min eine 0 in der ausgabe angezeigt...

Wo ist der denkfehler?
Oder gibt es bessere Lösungen um einen onlinecounter zu erstellen?

Code:
<?php
	$cur_IP = $_SERVER['REMOTE_ADDR'];
 	$cur_time = time();
	$IP_found2 = 0;



  $abfrage = SELECT time, IP FROM counter_index2 ORDER BY time ASC;;
  $ergebnis = mysql_query($abfrage);
	while($row = mysql_fetch_assoc($ergebnis))
	{
		if($cur_IP == $row['IP'] and ($cur_time - 300) <= $row['time']) 
		{ $IP_found2 = 1; }
	}
	
	if(!$IP_found2)
	{
		$abfrage = INSERT INTO counter_index2
           (time, IP)
          VALUES
           (.$cur_time.,'.$cur_IP.');
					mysql_query($abfrage);
	}



  $abfrage = SELECT time, IP FROM counter_index ORDER BY time ASC;;
  $ergebnis = mysql_query($abfrage);
	while($row = mysql_fetch_assoc($ergebnis))
	{
		if ($cur_time - 500 <= $row['time'])
		{ $i_online++; }
	}


echo $i_online
?>
 
  • #2
Code:
<?php
 $cur_IP = $_SERVER['REMOTE_ADDR'];
 $cur_time = time();
 $IP_found2 = 0;

 $abfrage = SELECT time, IP FROM counter_index2 ORDER BY time ASC;
 $ergebnis = mysql_query($abfrage);
 while($row = mysql_fetch_assoc($ergebnis)) {
  if($cur_IP == $row['IP'] and ($cur_time - 300) <= $row['time']) { $IP_found2 = 1; }
 }

 if(!$IP_found2) {
  $abfrage = INSERT INTO counter_index2 (time, IP) VALUES (->$cur_time',->$cur_IP' );
  mysql_query($abfrage);
 }

 $abfrage = SELECT time, IP FROM counter_index ORDER BY time ASC;
 $ergebnis = mysql_query($abfrage);
 while($row = mysql_fetch_assoc($ergebnis)) {
  if (($cur_time - 500) <= $row['time']) { $i_online++; }
 }

echo $i_online;
?>

geht es so?
 
  • #3
oder so ???

Code:
<?php
$db_host = localhost;
$db_user = xxx;
$db_pass = xxx;
$db_database = countertest;
$db_table = counter;

$cur_ip 		= $_SERVER['REMOTE_ADDR'];
$expire_time 	= 300; // 5 min. Gültigkeit

$expire_in		= time() + $expire;
$expired 		= time() - $expire_time;

if($res_id = mysql_connect($db_host, $db_user, $db_pass)) {
	if(!mysql_select_db($db_database, $res_id)) {
		die(<p style='color:red; font-weight:bold'>Konnte Datenbank \$db_database\ nicht öffnen!</p>);
	}
}
else {
	die(<p style='color:red; font-weight:bold'>Keine Verbindung zur Datenbank!</p>);	
}

/**
* Tabelle aufräumen
*/
$sql = DELETE FROM . $db_table . WHERE expire < .$expired. AND ip !='.$cur_ip.';
mysql_query($sql);
// evtl. Ausgabe der gelöschten Einträge
echo <p>Gelöschte Einträge: <b>. mysql_affected_rows() .</b></p>;

/**
* Tabelle Update oder Neu-Eintrag ???
*/
$sql = UPDATE . $db_table . SET expire=.$expire_in. WHERE ip='.$cur_ip.';
mysql_query($sql);
if(mysql_affected_rows() > 0) {
	// Ausgabe der erneuerten IP's (kann normal nur 1 sein)
	echo <p>Update: <b>. mysql_affected_rows() . IP</b></p>;
}
else {
	$sql = INSERT INTO . $db_table . SET ip='.$cur_ip.', expire=.$expire_in.;
	mysql_query($sql);
	echo <p>Neueintrag: <b>. $cur_ip .</b></p>;
}
/**
* Wieviel User sind Online
*/
$sql = SELECT count(ip) as c FROM . $db_table .;
$res = mysql_query($sql);
$row = mysql_fetch_row($res);
$txt = ($row[0] == 1) ? ist : sind;
echo Es . $txt . <b>. $row[0] .</b> User Online!</p>;
?>

;) ;D

gruss conny
 
  • #4
xxl format oder wie?
 
  • #5
  • #6
ob du deinen counter darauf aufgelegt hast XXL mässig aussehen zu lassen

ganz nach pimp my counter bzw. Supersize the Counter
 
  • #7
Billy_CH schrieb:
ob du deinen counter darauf aufgelegt hast XXL mässig aussehen zu lassen

ganz nach pimp my counter bzw. Supersize the Counter

- Der Counter funktioniert bestens.
- Kommentare zur Funktion sind immer hilfreich
- Abgelaufene Einträge werden gelöscht
- Bestehende Einträge werden erneuert und NICHT neu geschrieben
- warum soll ich die ganze Tabelle einlesen und in einer WHILE Schleife (2x) durchlaufen lassen
usw.

aber mir solls ja egal sein ;) ;D


gruss conny
 
  • #8
lol

so en kombiangebot ::)
 
  • #9
Nur mal so am Rande, deine Version wird in 100 Jahren nicht funktionieren ;) ;D ;D ;D ;D

Aber da du ja so schlau bist
Billy_CH schrieb:
ich mach ja NIE fehler ^^. da gibts nichts zum debuggen :p

werde ich dir den Fehler natürlich nicht zeigen ;) ;D ;D

Mehr gibts hierzu nicht zum sagen.

gruss conny
 
  • #10
hmm

du verfolgst jeden Post vor mir? *bibber*

ganz nach LOTW(Lord of the Weed) wo Gandalf sagt Ich werde folgt. aah die Wände kommen immer näher...

löl

--> öff topic ^^
 
  • #11
  • #12
bene schrieb:

dir nicht ;D
 
Thema:

online counter macht Probleme

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben