Textcounter mit IP Sperre (MySQL)
#1
Textcounter mit IP Sperre (MySQL)

Ein Textcounter mit MySQL ist die schwierigste Form eines Counters aber immerhin noch die beste Wink 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 ;-)
  Zitieren
#2
Hui, eine Mücke mit nem Elefanten erschlagen *g* (http://netboard.sunsonic.de/wbboard/thre...eadid=5616)

Nein Unsinn. Sieht gut aus. Vll könnte man eine Kombination aus Cookie und IP Sperre machen. Das könnte dann auch über einen längeren Zeitraum geschehen.

Ich war mal in nem Chat (Flash) wo aber anders gesperrt wurde. Irgendwie der Computername oder die Mac Adresse. Jedenfalls ließ sich das nicht umgehen wenn man eben diesen Namen nicht geändert hat. Vll weiß da jemand etwas.
  Zitieren
#3
mit flash kannste mehr auslesen da es aufn pc ausgeübt wird Wink genauso mit java =)

mit php ist das leider nicht möglich leider =)

aber mal im ernst wer hat schon lust dauernd router stromlos zumachen ?

ich mach irgendwann noch einen counter mit grafik... :daumen:
  Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 4 Gast/Gäste