Habe schonmal so ein Script geschrieben, jedoch würde es dir jetzt nicht helfen, wenn ich es einfach Poste.
Deshalb erklär ich es einmal Kurz, schwer ist so ein Script ja nicht gerade.
Da ich sehr gerne Sauber arbeite, erstmal paar Configs:
Code:
$db_name = 'db_name';
$db_host = 'localhost';
$db_username = 'db_benutzer';
$db_passwd = 'db_passwort';
$link = 'http://domain.tld/ref.php';
$clicks = '10'; /* Max Klicks (Beispiel: 10) */
$ip = $_SERVER['REMOTE_ADDR'];
$timestamp = time();
Zunächst bauen wir die MySQL Verbindung auf, welche mit einem "Kann nicht mit DB verbinden stirbt, falls die Daten falsch sind
Code:
$connect = mysql_connect($db_host, $db_username, $db_passwd);
if (!$connect)
{
die('Kann nicht mit DB verbinden: ' . mysql_error());
}
mysql_select_db($db_name);
Nun fragen wir die DB, ob die die IP bereits kennt, falls ja nimmt man diese, falls nicht wird ein neuer Eintrag erstellt
Code:
$a = mysql_query('SELECT * FROM users WHERE ip = "'.$ip.'" ');
mysql_fetch_assoc($a);
$sql1 = "INSERT INTO users (ip, count) VALUES ('".$ip."', '0')";
if(mysql_num_rows($a)==0){
mysql_query($sql1);
}
Nun Updaten wir den Counter der angegebenen ID und schreiben die IP in die Visitor Tabels, damit sie nicht mehrfach den Link aufrufen kann.
Code:
$id = $_GET['id'];
$b = mysql_query('SELECT * FROM visitor WHERE ip = "'.$ip.'" ');
$sql2 = "INSERT INTO visitor (time, ip) VALUES ('".$timestamp."', '".$ip."')";
mysql_fetch_assoc($b);
if(mysql_num_rows($b)==0){
mysql_query($sql2);
mysql_query("UPDATE `users` SET count = count + 1 WHERE id = $id");
}
$c = mysql_query('SELECT * FROM users WHERE ip = "'.$ip.'" ');
$lookip = mysql_fetch_array($c);
Natürlich kann man den Counter auch ganz einfach wieder zurücksetzen, dies habe ich bei mir nach 365 Tagen automatisiert!
Code:
$loeschen = "DELETE FROM visitor WHERE time + 365 < $timestamp";
mysql_query($loeschen);
Nun will man ja auch wissen, ob man genug Klicks hat, dies kann man wie folgt machen:
Code:
if ($lookip['count']>=$clicks){
echo 'Genug Klicks Have fun';
} else {
echo'Dein Link wurde bisher nicht oft genug angeklickt!';
}
Das war's, natürlich kann man auch noch vieles anders machen und perfekt ist es auch nicht, ist Jahre her, wo ich das geschrieben habe.
Beispielsweise könnte man auch noch Cookies verwenden, damit es nicht so einfach ist die Klicks mit Proxy's zu faken oder sonstiges.
Bets regards