Ein Textcounter mit MySQL ist die schwierigste Form eines Counters aber immerhin noch die beste Bei der Cookie Methode kann man mit deaktivierten Cookies die Sperre umgehen mit einer MySQL-Datenbank hingegen wird dieses zunehmend erschwert leider gibt es eine Schwachstelle da dieses Script die IP-Adresse des benutzers speichert könnte sich der Benutzer mit einen Reconnect eine neue IP-Adresse beim provider holen und er kann wieder einen Count produziern eine andere Variante ist mit PHP nicht Möglich. man könnte das sicher vereinen einen MySQL, Cookie IP-Sperren Counter aber diesen Aufwand sind die meisten Scripte nicht wert.
Ich habe den kompletten Sourcecode geschrieben und ausgiebig kommentiert.
Ihr solltet über Grundlegende Kentnisse PHP und MySQL verfügen.
Wir führen zunächst einen SQL-Befehl in phpMyAdmin oder ähnlichen aus.
Code:
CREATE TABLE `tutorial_counter` (
`wert` int(11) NOT NULL default '0'
)
INSERT INTO `tutorial_counter` (`wert`) VALUES
(1)
CREATE TABLE `tutorial_counter_sperre` (
`ip` varchar(15) collate latin1_german1_ci NOT NULL default '0',
`time` int(15) NOT NULL default '0'
)
Kommen wir zum eigentlichen Script, hier müsst Ihr zunächst die MySQL-Verbindungsdaten eures Servers eintragen.
[code=php]<?php
#############################################
# Netccode Forum :: PHP/Tutorial. #
# Textcounter mit IP Sperre (MySQL) #
#############################################
# MySQL Host
$db_host = "";
# MySQL Benutzer
$db_user = "";
# MySQL Passwort
$db_pass = "";
# MySQL Tabelle
$db_data = "";
# Wir ermitteln die IP-Adresse des benutzers.
$ip = $_SERVER[REMOTE_ADDR];
# Zeit wann Alte Daten gelöscht werden sollen
$diff = time()-86400; // Ergibt aktuelle Zeit - 24 Std.
# Verbindung zur Datenbank herstellen und Tabelle auswählen.
$ver = mysql_connect("$db_host", "$db_user", "$db_pass");
mysql_select_db("$db_data");
# Zunächst werden alte MySQL Werte gelöscht die schon länger als 24 Std her sind.
mysql_query("DELETE FROM `tutorial_counter_sperre` WHERE time < ".$diff."");
$result = mysql_query("SELECT * FROM `tutorial_counter_sperre` WHERE `ip`='".$ip."'");
if(mysql_num_rows($result))
{
# IP-Adresse steht in Datebank.
}
else
{
# IP-Adresse steht noch nicht in Datenbank.
mysql_query("INSERT INTO `tutorial_counter_sperre` SET time='".time()."',`ip`='".$ip."'");
mysql_query("UPDATE `tutorial_counter` SET wert = (wert + 1)");
}
# Auslesen des aktuellen Counterstandes.
$ausgabe = mysql_fetch_assoc(mysql_query("SELECT * FROM `tutorial_counter`"));
# Aktuelle Counterstand wird ausgegeben
echo $ausgabe["wert"];
# Wir schließen die MySQL-Verbindung wieder.
mysql_close($ver);
?>[/code]
Ich hoffe es hat euch wie immer spaß gemacht und Feedback ist wie immer erwünscht ;-)
Wie ich schon in meinen ersten Klickcounter Tutorial berichtete gibt es noch eine zweite alternative.
Was wir benötigen sind wieder Grundkentnisse PHP, beachtet bitte das dieses Tutorial anderst ist als diese die Ihr im Netz so findet bei den meisten Tutorials zum Thema IP-Sperre muss der *setcookie* Part am anfang einer Datei stehen und macht es so fast unmöglich den Text irgendwo in einer Datei auszugeben, dieses Problem habe ich ganz clever gelößt
Wir erstellen mal eine index.php.
mit folgenden Inhalt.
Code:
<?php include("counter.php"); ?>
<html>
<head>
<title>Netccode Forum, PHP/Tutorial: Textcounter mit IP Sperre (Cookie)</title>
</head>
<body>
Hallo du bist Besucher Nr. <?php echo $ausgabe; ?> auf meiner Seite.
</body>
</html>
Jetzt würde er die counter.php am Anfang der Datei einfügen und dank
dieser Ausgabe im HTML Code die Ausgabe des Wertes an einer mir zugeordneten Stelle ausgeben.
Code:
<?php echo $ausgabe; ?>
unsere counter.php schaut dan so aus...
[code=php]<?php
#############################################
# Netccode Forum :: PHP/Tutorial. #
# Textcounter mit IP Sperre (Cookie) #
#############################################
# Diese Datei muss zwingend schreibrechte besitzen. (CHMOD 777)
$countfile = "anzahl.txt";
# Wir ermitteln die IP-Adresse des benutzers.
$ip = $_SERVER[REMOTE_ADDR];
# Die Datei wird geöffnet
$file = fopen("$countfile", "r+");
# Die Datei wird eingelesen
$ausgabe = fgets($file,100);
if(isset($_COOKIE["ipsperre"]))
{
// Cookie ist vorhanden (wir machen nix)
}
else
{
// Cookie ist noch nicht vorhanden.
# Wir setzen einen Cookie (Wert des Cookie, IP-Adresse des Besuchers, Zeit wann gesetzt wurde)
setcookie ("ipsperre",$ip, time()+86400); // Diese wäre eine 24. stündige Sperre.
# Die in der Datei stehende Zahl wird um 1 erhöht.
$ausgabe = $ausgabe+1;
# Cursor wird auf Erste Zeile gesetzt.
rewind($file);
# Datei wird überschrieben, mit zuvor ausgelesen Wert +1.
fputs($file,$ausgabe);
# Datei wird wieder freigegeben.
fclose($file);
}
?>[/code]
Wenn man jetzt die index.php aufruft wird nur einmal gezählt es sei den man löscht seine Cookies im Internetbrowser.
Daher ist diese Variante auch nicht die sicherste aber es gibt ja noch eine die ich in einen andern Tutorial nähr erklären werde ich hoffe hat euch spaß gemacht Feedback wie immer erwünscht
Einen Textcounter ohne IP-Sperre ist keine große Sache wir benötigen Grundkentnisse PHP um dieses zu bewerkstelligen als nächstes legen wir eine Datei namens counter.php an und öffnen diese mit einen Editor deiner wahl.
Ich habe den kompletten Sourcecode geschrieben und ausgiebig kommentiert.
[code=php]<?php
#############################################
# Netccode Forum :: PHP/Tutorial. #
# Textcounter ohne IP Sperre (Hitcounter) #
#############################################
# Diese Datei muss zwingend schreibrechte besitzen. (CHMOD 777)
$countfile = "anzahl.txt";
# Die Datei wird geöffnet
$file = fopen("$countfile", "r+");
# Die Datei wird eingelesen
$ausgabe = fgets($file,100);
# Die in der Datei stehende Zahl wird um 1 erhöht.
$ausgabe = $ausgabe+1;
# Cursor wird auf Erste Zeile gesetzt.
rewind($file);
# Datei wird überschrieben, mit zuvor ausgelesen Wert +1.
fputs($file,$ausgabe);
Dieser Code ist hingegen nur ein Klickcounter das heißt wenn ich die Seite aktuallisiere zählt der Wert immer um einen hoch...
Um dieses zu verhindern gibt es Counter mit IP Sperre doch diese sind auch sehr leicht zu umgehen dieses zeige ich euch aber in einen andern Tutorial.
Ich hoffe es hat euch spaß gemacht für Feedback wäre ich euch dankbar
Voraussetzung: Aktiviertes JavaScript da ich recht viel mit JavaScript und Ajax gemacht habe. Eine extra Version für alle JavaScript Verweigerer gibt es nicht ;-) Die markierten Beiträge gelten nur für eine Seite.
Zum Einbau:
1.) Lade alle Dateien wie sie im Anhang zu finden sind in der selben Ordnung auf deinen Webserver
Im Moment befindet sich das Forum auf der Version 0.16a.
Das OvBB (Wahrscheinlich Open vBulletin mit altbekanntem Schreibfehler der zwei B) hat sich zum Ziel gesetzt, ein Klon des vBulletin 2 zu sein. Das Layout sieht vielversprechend aus, aber der Administrationsbereich sieht dem Original nicht sehr ähnlich, auch scheint hier die Installation dem vBulletin 1.1 ähnlicher zu sein.
Es lohnt sich, dieses Forum zu verfolgen und im Hinterkopf für etwaige Projekte zu halten.
Das Forum funktioniert in dieser Version absoulut tadellos auf meinem Localhost und macht durch das Motto einiges intressant.
ACP Screenshot -> Oberfläche in Demo sichtbar.
Das OvBB wird offiziell NICHT mehr weiterentwickelt. Offizieller Text:
As of 2007-11-23 07:38, this project is no longer under active development.
Heute zum Sonntag möchten wir euch verkünden das unsere Webseite http://www.all2host.de, in einen neuen Gewand strukturiert wurde. Durch die neue Benutzerfreundlichkeit und Übersichtlichkeit, möchten wir den Besuchern und Neu Kunden mehr entgegen kommen. Haben Sie weitere Fragen, so können Sie uns gerne unter welcome @tropiait.net eine E-Mail zu kommen lassen.
Wir wünschen allen Besuchern auf unserer Webseite All2Host.de weiterhin viel Spaß.
1. Wenn man auf das Team Button klickt erscheint ein Fehler
Code:
QL-DATABASE ERROR
Database error in WoltLab Burning Board: Invalid SQL: SELECT u.userid, u.username, u.invisible, u.receivepm, u.lastactivity, uf.* FROM bb1_users u, bb1_groups g LEFT JOIN bb1_userfields uf ON (u.userid=uf.userid) WHERE u.groupid = g.groupid AND g.ismod=1 ORDER BY u.username ASC
2. Wie bekomm ich oben links den Text cssfile weg ?
3. hab keine fehler mehr entdeckt.....und ihr?