Das da nichts reelles geklaut wird war mir schon klar.
Ich mein ja nur, dass diese Art Spiel wirklich jegliche Art Sinn vermissen laesst.
Da kann man besser gegen sich selbst Schach spielen wenn man nichts zu tun hat.
Naja, von Sinn und Unsinn dieses Systems mal abgesehen, dass ganze wird dann wohl so aussehen wie Voodoo bereits beschrieben hat.
Ich versuch das mal in etwas Code und eine kleine DB-Struktur zu packen.
Die Frage ist nur wie genau die Reload-Sperre realisiert werden soll.
Da gaebe es zum einen die guten, alten Cookies, welche aber vom User abgewiesen, bzw. geloescht werden koennen.
Dann gibt es noch die IP, welche man aber auch ohne weiteres durch eine erneute Einwahl aendern kann. Daher ist wohl keine der beiden Loesungen "der Stein der Weisen".
Ich nutze jetzt mal die Variante mit der IP, da Du diese ja bereits angesprochen hast.
Datenbank-Aufbau:
Tabelle users:
id INT
username VARCHAR
password VARCHAR
email VARCHAR
punkte INT
Tabelle ips:
ip VARCHAR
userid INT
clicktime TIMESTAMP
Okay, here we go...
Die Registrierung und das Login lass ich jetzt mal weg. Und auch auf die Datenbank-Verbindung verzichte ich jetzt einfach mal.
stats.php (diese Seite wird nach dem Login aufgerufen, $_SESSION['id'] enthaelt die ID des eingeloggten Users):
PHP:
<?php
if (isset($_SESSION['id']))
{
$id=$_SESSION['id'];
$users=mysql_query("select * from users where id='$id'");
$user=mysql_fetch_assoc($users);
if (empty($user))
{
//header() zum Login/zur Registrierung
}
printf("%s<hr>%s Punkte",$user['username'],$user['punkte']);
?>
<form method="post" action="mail.php">
<input type="input" name="mail">
<input type="submit" name="send" value="Abschicken">
</form>
<?php
}
else
{
//header() zum Login/zur Registrierung
}
?>
mail.php:
PHP:
<?php
if (isset($_SESSION['id']))
{
$id=$_SESSION['id'];
$users=mysql_query("select * from users where id='$id'");
$user=mysql_fetch_assoc($users);
if (empty($user))
{
//header() zum Login/zur Registrierung
}
if (!empty($_POST['mail']))
{
$mail=$_POST['mail'];
$text=$user['username']." hat Dich eingeladen am Diebspiel teilzunehmen.\nSeine eMail-Adresse ist ".$user['email'].", nur fuer den Fall, dass die ihn kontaktieren willst.\nUm Dich von ".$user['username']." beklauen zu lassen bitte klicke auf folgenden Link: http://www.wasweissich.de/beklaumich.php?user=".$user['id'];
mail($mail,"Einladung zum Diebspiel",$text);
}
header("Location:stats.php");
}
else
{
//header() zum Login/zur Registrierung
}
?>
beklaumich.php:
PHP:
<?php
if (isset($_GET['user']))
{
$id=$_GET['user'];
$users=mysql_query("select * from users where id='$id'");
$user=mysql_fetch_assoc($users);
$ip=$_SERVER['REMOTE_ADDR']; //oder so aehnlich
$oldtime=time()-21600;
$iplocks=mysql_query("select * from ips where ip='$ip' and clicktime>'$oldtime'");
$iplock=mysql_fetch_assoc($iplocks);
if ((!empty($user)) && ($empty($iplock)))
{
$user['punkte']++;
mysql_query("update users set punkte='".$user['punkte']."' where id='id'");
$clicktime=time();
mysql_query("insert into ips (ip,userid,clicktime) values ('$ip','$id','$clicktime')");
echo "Danke!<br>";
//echo Link zum Login/zur Registrierung
}
}
?>
Ungefaehr so. Ich uebernehme keine Gewaehr ob das so funktioniert. Hab das ohne Testumgebung geschrieben, halt so aus dem Stehgreif.