murb.com Hauptseite  •   Registrieren  •  SUCHE  •  FAQ  •  Mitgliederliste  •  Forenregeln  •  Login
Neue Antwort erstellen SQL-Counter
Gehe zu Seite 1, 2, 3, 4, 5, 6  Weiter
SQL-Counter
Firewolf
Administrator
Beiträge: 239
Antworten mit Zitat
Hinweis: Eine neue Version des MySQL-Counters steht zur Verfügung: Hier entlang.

Wie angekündigt hier nun der Counter als MySQL-Version:

PHP-Code:
<?php
##################################
#                                #
#  MySQL-Datenbank Zugangsdaten  #
#                                #
##################################

$dbhost = "localhost"; // Datenbank-Adresse (IP); Standard "localhost"
$dbname = "datenbank"; // Datenbank-Name
$dbuser = "benutzername"; // Benutzername
$dbpwd = "passwort"; // Benutzerpasswort

#### Tabellen ####

$db_counter = "sqlc_counter";
$db_iplog = "sqlc_iplog";

#### Einstellungen ####

$splitter = "&nbsp;&nbsp;|&nbsp;&nbsp;";

##################

$datenbank = mysql_connect($dbhost, $dbuser, $dbpwd);
mysql_select_db($dbname, $datenbank);

if (
$_GET[action] == "install") // Tabellen-Installation
{
$installerror = 0;
$tabellencheck1 = @mysql_query("SELECT * FROM $db_counter WHERE id = '1'");
if (@
mysql_num_rows($tabellencheck1) != 0)
{
$installerror = 1;
echo 
"Die Tabelle &quot;$db_counter&quot; existiert bereits.<br>";
}
$tabellencheck2 = @mysql_query("SELECT * FROM $db_iplog");
if (@
mysql_num_rows($tabellencheck2) != 0)
{
$installerror = 1;
echo 
"Die Tabelle &quot;$db_iplog&quot; existiert bereits.";
}
if (
$installerror == 1)
{
exit;
}
else
{
$install1 = "CREATE TABLE $db_counter (";
$install1 .= "id int(10) NOT NULL default '0', ";
$install1 .= "online_record int(20) NOT NULL default '0', ";
$install1 .= "today int(20) NOT NULL default '0', ";
$install1 .= "yesterday int(20) NOT NULL default '0', ";
$install1 .= "day_record int(20) NOT NULL default '0', ";
$install1 .= "total int(20) NOT NULL default '0', ";
$install1 .= "pages_total int(20) NOT NULL default '0', ";
$install1 .= "date int(20) NOT NULL default '0', ";
$install1 .= "PRIMARY KEY (id)) TYPE=MyISAM";
mysql_query($install1) or die (mysql_error() . ": " . mysql_error() . "\n");
mysql_query("INSERT INTO $db_counter SET id = '1', online_record = '1'");
$install2 = "CREATE TABLE $db_iplog (";
$install2 .= "id int(10) NOT NULL auto_increment, ";
$install2 .= "ip varchar(254) NOT NULL default '', ";
$install2 .= "timestamp int(20) NOT NULL default '0', ";
$install2 .= "PRIMARY KEY (id)) TYPE=MyISAM";
mysql_query($install2) or die (mysql_error() . ": " . mysql_error() . "\n");
mysql_query("INSERT INTO $db_iplog SET ip = '127.0.0.0'");
echo 
"Installation erfolgreich!";
exit;
}
}

$tabellencheck1 = @mysql_query("SELECT * FROM $db_counter WHERE id = '1'");
$tabellencheck2 = @mysql_query("SELECT * FROM $db_iplog");
if (@
mysql_num_rows($tabellencheck1) == 0)
{
@
mysql_query("INSERT INTO $db_counter SET id = '1', online_record = '1'");
}
if (@
mysql_num_rows($tabellencheck2) == 0)
{
@
mysql_query("INSERT INTO $db_iplog SET ip = '127.0.0.0'");
}
$tabellencheck3 = @mysql_query("SELECT * FROM $db_counter WHERE id = '1'");
$tabellencheck4 = @mysql_query("SELECT * FROM $db_iplog");
if (@
mysql_num_rows($tabellencheck3) == 0 || @mysql_num_rows($tabellencheck4) == 0)
{
echo 
"ERROR: Tabellen sind nicht korrekt installiert.";
exit;
}

$timestamp = time(); // Aktuelle Zeit
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$varip = getenv('HTTP_X_FORWARDED_FOR');
}
else
{
$varip = getenv('REMOTE_ADDR'); 
}

$countuser = 1;
$newuser = 0;
$fetchlogs = mysql_query("SELECT * FROM $db_iplog", $datenbank);
$loganzahl = mysql_affected_rows();
if (
$loganzahl > 0) // Wenn bereits user geloggt wurden
{
while (
$flogs = mysql_fetch_array($fetchlogs))
{
if (
$flogs[ip] == $varip) // User ist bereits geloggt
{
$diff = $timestamp - $flogs[timestamp];
if (
$diff > 900) // Liegt der letzte Besuch länger als diese Zeit zurück, so gilt der User als neuer Besucher
{
$countuser = 1;
}
else
{
$countuser = 0;
}
$newuser = $flogs[id];
if (
$diff > 300) // Wenn der letzte Besuch länger als diese Zeit her ist, wird die Zeit aktualisiert.
{
$sql = "UPDATE $db_iplog SET ";
$sql .= "timestamp = '$timestamp' ";
$sql .= "WHERE id = '$newuser'";
mysql_query($sql);
}
}
}
}
else
{
$countuser = 1; // User zählt als neuer Besucher (ist noch nicht geloggt)
}

$fetchstats = mysql_query("SELECT * FROM $db_counter WHERE id = '1'", $datenbank);
$fstats = mysql_fetch_array($fetchstats);

$day = date("d");
if (
$day != $fstats[date]) // Ein neuer Tag ist angebrochen...
{
$yesterday = $fstats[today];
$sql = "UPDATE $db_counter SET ";
$sql .= "date = '$day', ";
$sql .= "yesterday = '$fstats[today]', ";
if (
$countuser == "1")
{
$sql .= "today = '0' ";
}
else
{
$sql .= "today = '1' ";
}
$sql .= "WHERE id = '1'";
mysql_query($sql);
}

$fetchstats = mysql_query("SELECT * FROM $db_counter WHERE id = '1'", $datenbank);
$fstats = mysql_fetch_array($fetchstats);

$newcounts = 0;
if (
$countuser == "1") // User wird gezählt
{
#### ip-log ####
if ($newuser == "0")
{
$sql = "INSERT into $db_iplog SET ";
$sql .= "ip = '$varip', ";
$sql .= "timestamp = '$timestamp'";
}
else
{
$sql = "UPDATE $db_iplog SET ";
$sql .= "ip = '$varip', ";
$sql .= "timestamp = '$timestamp' ";
$sql .= "WHERE id = '$newuser'";
}
mysql_query($sql);
################

$newtoday = $fstats[today] + 1;
if (
$newtoday > $fstats[day_record]) // Neuer Tagesrekord?
{
$newdayrecord = $newtoday;
}
else
{
$newdayrecord = $fstats[day_record];
}
$newtotal = $fstats[total] + 1;

$newcounts = 1;
}

$newpagestotal = $fstats[pages_total] + 1; // Neuer Seitenhit

if ($newcounts == "1")
{
$sql = "UPDATE $db_counter SET ";
$sql .= "today = '$newtoday', ";
$sql .= "day_record = '$newdayrecord', ";
$sql .= "total = '$newtotal', ";
$sql .= "pages_total = '$newpagestotal' ";
$sql .= "WHERE id = '1'";
mysql_query($sql);
}
else
{
$sql = "UPDATE $db_counter SET ";
$sql .= "pages_total = '$newpagestotal' ";
$sql .= "WHERE id = '1'";
mysql_query($sql);
}

##### online-user #####
$newonline = 0;
$fetchonline = mysql_query("SELECT * FROM $db_iplog", $datenbank);
$useranzahl = mysql_affected_rows();
if (
$useranzahl > 0)
{
while (
$fonline = mysql_fetch_array($fetchonline))
{
$diff = $timestamp - $fonline[timestamp];
if (
$diff <= 300) // Alle Logeinträge die weniger als diese Zeit als sind gelten als Online-User
{
$newonline += 1;
}
}
}
if (
$newonline < 1) // Weniger als 1 nicht möglich...
{
$newonline = 1;
}

if (
$newonline > $fstats[online_record]) // Neuer Onlinerekord?
{
$newonlinerecord = $newonline;
$sql = "UPDATE $db_counter SET ";
$sql .= "online_record = '$newonlinerecord' ";
$sql .= "WHERE id = '1'";
mysql_query($sql);
}
#######################

$fetchlogs = mysql_query("SELECT * FROM $db_iplog", $datenbank);
$logsanzahl = mysql_affected_rows();
if (
$logsanzahl > 100) // Es werden maximal [Anzahl] IPs + Timestamp gespeichert
{
$y = $logsanzahl - 100;
while (
$y > 0)
{
$fetchlogs = mysql_query("SELECT * FROM $db_iplog ORDER BY id ASC", $datenbank);
$flogs = mysql_fetch_array($fetchlogs);
mysql_query("DELETE FROM $db_iplog WHERE id = '$flogs[id]'");
$y -= 1;
}
}

$fetchstats = mysql_query("SELECT * FROM $db_counter WHERE id = '1'", $datenbank);
$fstats = mysql_fetch_array($fetchstats);

######### Counter ausgeben ##########

$writecounter = "Online:&nbsp;".$newonline.$splitter;
$writecounter .= "Onlinerekord:&nbsp;".$fstats[online_record].$splitter;
$writecounter .= "Heute:&nbsp;".$fstats[today].$splitter;
$writecounter .= "Gestern:&nbsp;".$fstats[yesterday].$splitter;
$writecounter .= "Tagesrekord:&nbsp;".$fstats[day_record].$splitter;
$writecounter .= "Gesamt:&nbsp;".$fstats[total].$splitter;
$writecounter .= "Seitenaufrufe:&nbsp;".$fstats[pages_total];
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100%" align="center" valign="top" style="padding: 2px"><?php echo $writecounter; ?></td>
</tr>
</table>


Die Datei zum Download gibt es HIER.
Der Counter befindet sich noch in der Testphase... erst wenn alles läuft kommt eine Anleitung dazu und er wird auf murb.com gesetzt.

Kurzanleitung:
1. counter.php öffnen und Datenbank-Zugangsdaten anpassen
2. counter.php uploaden
3. Im Browser folgendes aufrufen: http://www.deinedomain.de/counter.php?action=install
4. counter.php aufrufen und nachsehen, ob er funktioniert
5. counter.php an der gewünschten Stelle einbinden

Bei Fragen und Problemen hier posten.


Zuletzt bearbeitet von Firewolf am 02.11.2007, 00:11, insgesamt 2-mal bearbeitet
Benutzer-Profile anzeigenAlle Beiträge von Firewolf anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchenICQ-Nummer
Gast
Antworten mit Zitat
Ah endlich issa da Very Happy Very Happy

Thx
cheetah
Beiträge: 34
Antworten mit Zitat
Ich nochmal
hab vergessen mich einzuloggen Embarassed

_________________
MFG
ChEeTaH
----------
There are 10 types of people in the world: Those who understand binary, and those who don't...
Benutzer-Profile anzeigenAlle Beiträge von cheetah anzeigenPrivate Nachricht sendenICQ-Nummer
cheetah
Beiträge: 34
Antworten mit Zitat
Hi nochmal
Wie kann ich den Counter senkrecht anordnen? Also

Online
1
-----
Onlinerekord
1

Also eigntl alles mehr mittig Very Happy
Hab schon <br> usw. ausprobiert, wird aber nicht von der php-datei akzeptiert Sad

P.S.Der Counter funzt 1a!! Fettes Lob!

//Edit:
Der counter funzt fast 1a:

Wenn ich die Tabellen leere zeigt der counter die Fehlermeldung an das die Tabellen nicht richtig installiert sind. Ist des a Bug oder muss des so sein?

_________________
MFG
ChEeTaH
----------
There are 10 types of people in the world: Those who understand binary, and those who don't...
Benutzer-Profile anzeigenAlle Beiträge von cheetah anzeigenPrivate Nachricht sendenICQ-Nummer
verzweifelt
moni
Gast
Antworten mit Zitat
hi,

zunächst herzlichen dank für das script.
gestern installiert, design angepasst - alles funktionierte einwandfrei.

heute rufe ich meine seite auf und hab die fehlermeldung:
Code:
"ERROR: Tabellen sind nicht korrekt installiert"


was läuft da schief? würde mich über hilfe freuen.

gruß, moni
moni
Gast
Antworten mit Zitat
cheetah hat Folgendes geschrieben:
Wie kann ich den Counter senkrecht anordnen?
...Hab schon <br> usw. ausprobiert


für zeilenumbruch:

suche
$splitter = "&nbsp;&nbsp;|&nbsp;&nbsp;";

und ersetze mit
$splitter = "<br />";
Firewolf
Administrator
Beiträge: 239
Antworten mit Zitat
cheetah hat Folgendes geschrieben:
Wenn ich die Tabellen leere zeigt der counter die Fehlermeldung an das die Tabellen nicht richtig installiert sind. Ist des a Bug oder muss des so sein?
Das war Absicht, da es eine schnelle Lösung war... habe das ganze jetzt etwas verbessert. Nun sollte (sofern beide Tabellen vorhanden sind) der Counter nach dem Leeren der Tabellen keine Fehlermeldung mehr ausspucken.

Außerdem habe ich die "Trennungsvariable" ($splitter) nach oben gepackt.

Der nächste Schritt wird eine verbesserte Anordungsmöglichkeit, damit z.B. bei senkrechter Ausgabe die Zahlen direkt untereinander stehen (wie auf murb.com zu sehen).
Benutzer-Profile anzeigenAlle Beiträge von Firewolf anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchenICQ-Nummer
cheetah
Beiträge: 34
Antworten mit Zitat
gleicher Link?

_________________
MFG
ChEeTaH
----------
There are 10 types of people in the world: Those who understand binary, and those who don't...
Benutzer-Profile anzeigenAlle Beiträge von cheetah anzeigenPrivate Nachricht sendenICQ-Nummer
Gast
Antworten mit Zitat
Bei mir zählt der Counter nur Seitenaufrufe, gleichzeitige Besucher und alles andere stagniert bei Zahlen zwischen 2 und 10. Das ist definitiv falsch.
Firewolf
Administrator
Beiträge: 239
Antworten mit Zitat
cheetah hat Folgendes geschrieben:
gleicher Link?
Ja, bei Aktualisierungen passe ich den Code und den Link an (daher jetzt auch v.1.02 Very Happy).

Zitat:
Bei mir zählt der Counter nur Seitenaufrufe, gleichzeitige Besucher und alles andere stagniert bei Zahlen zwischen 2 und 10. Das ist definitiv falsch.
Seltsam, so ist es nicht geplant. Wie sieht denn der IP-Log aus?
Benutzer-Profile anzeigenAlle Beiträge von Firewolf anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchenICQ-Nummer
cheetah
Beiträge: 34
Antworten mit Zitat
ok gedownloadet
Thx Very Happy

_________________
MFG
ChEeTaH
----------
There are 10 types of people in the world: Those who understand binary, and those who don't...
Benutzer-Profile anzeigenAlle Beiträge von cheetah anzeigenPrivate Nachricht sendenICQ-Nummer
Gast
Antworten mit Zitat
Welches IP-Log meinst du?
Firewolf
Administrator
Beiträge: 239
Antworten mit Zitat
Die Einträge in der "sqlc_iplog"-Tabelle.
Benutzer-Profile anzeigenAlle Beiträge von Firewolf anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchenICQ-Nummer
Re: verzweifelt
Gast
Antworten mit Zitat
moni hat Folgendes geschrieben:
hi,

zunächst herzlichen dank für das script.
gestern installiert, design angepasst - alles funktionierte einwandfrei.

heute rufe ich meine seite auf und hab die fehlermeldung:
Code:
"ERROR: Tabellen sind nicht korrekt installiert"


was läuft da schief? würde mich über hilfe freuen.

gruß, moni

ich habe weder irgendwelche tabellen geleert noch sonst etwas "gemacht". bitte helft auch einem php-/mysql-neuling. würde es etwas bringen wenn ich meinen angepassten code (der 1 tag lang reibungslos funktionierte) hier poste? ich mache ja (fast) alles was ihr wollt..nur wäre es gut zu wissen, was ihr alles benötigt um mir helfen zu können *seufz
Gast
Antworten mit Zitat
Vielleicht hast du dein Username und/oder das Passwort falsch eingegeben??
SQL-Counter
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Alle Zeiten sind GMT + 1 Stunde  
Seite 1 von 6  

  
  
 Neue Antwort erstellen  
Powered by phpBB © phpBB Group
Design by phpBBStyles.com | Styles Database.
Content © murb.com - Forum