• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Glückskeks - Hilfe?!

Hesoyam

Neues Mitglied
Hi,

für die Seite
PlayHouse - The gaming Community
möchte ich einen "Glückskeks" programmieren.

habe mir da gedanken mal gemacht, da ich auch n bissel bammel hab mich da alleine ranzuamchen dachte ich mir, holst dir halt hilfe von aussen:

Also ich dachte mir das wie folgt:

Ein User öffnet die Seite /keks/index.php (bsp)
dann kann er dort auf eine schaltfläche klicken und es wird per Zufallsprinzip aus einer sql-db ein text rausgesucht.
der wird der IP zugeordnet.
Und jesemal wenn der user (vor 0:00) auf diese Seite geht, steht da eben dieser Spruch.

Und um 0:00:01 soll er sich dann wieder nen anderen spruch holen können ...
also keien 24std sperre sondern einen um 0:00:01-kannst-du-dir-nen-neuen-spruch-holen-sperre

Wie schaff ich das, dass die IP dem Spruch zugeordnet wird, OHNE dass der spruch dann für andere ip's gesperrt ist ....

Und des mit der Sperre ... da hab ich NULL ahnung wie ich des machen soll ....
 
Hallo,

folgendes ist bei IP-Sperren zu bedenken. Es gibt genügend I-Net-Nutzer, die nicht dauerhaft mit dem I-Net verbunden sind und bei jeder neuen Einwahl eine neue IP-Adresse bekommen, bzw. gibt es wohl auch eine 24-Stunden-Zwangstrennung. Gab es zumindest mal in der Zeit als ich noch Kunde von der Firma mit dem magentafarbenen T war. Dann gibt es noch das Vidalia-Paket (Tor und Privoxy) das bei HTTP-Anfragen ständig einen Proxy-Server nutzt und diesen regelmäßig ändert.

Als andere Lösung würden noch Cookies in Frage kommen, aber auch dabei kann es zu Fehlern kommen, da ich am Browser einstellen kann, ob Cookies akzeptiert werden, oder auch nicht.

Wenn Du die wechselnden IP-Adressen außer Acht lässt, könnte ich mir folgende Lösung vorstellen.

  • Die Tabelle mit den Glückskeks-Sprüchen muss eine Spalte mit einer eindeutigen ID haben (unique, auto-increment).
  • Du brauchst eine 2. Tabelle (IP-Sperre) mit IP-Adresse, Datum und Spruch-ID
  • Bei Druck auf die Schaltfläche mit der Variablen $REMOTE_ADDR die IP-Adresse auslesen
  • in der Tabelle IP-Sperre prüfen ob ein Datensatz mit der IP vorhanden ist.
  • Wenn nicht
    1. Zufälligen Satz aus der Sprüche Tabelle lesen
    2. Neuen Satz in der Tabelle IP-Sperren anlegen
  • Wenn ja
    1. Prüfen ob das Datum das aktuelle Tagesdatum ist
    2. Wenn ja, dann mit der Spruch-ID aus dem Datensatz die Sprüche-Tabelle lesen und Spruch anzeigen
    3. Wenn nein Zufälligen Spruch aus der Sprüche-Tabelle lesen und die Tabelle ID-Sperre mit dem aktuellen Tagesdatum und der Spruch-ID updaten
So, ich glaub das sollte es gewesen sein. Ach ja, ein kleines Problem gibt es noch. Die unterschiedlichen Zeiten von Webserver und lokaler Zeit des Internet-Nutzers. Aber damit musst Du wohl leben.

Gruß thuemmy
 
Ich habs soweit glaub ich ganz gut verstanden ....

Aber wie mach ich es, dass gleichzeitig aus Tabelle Sprüche ausgelesen wir und in Tabelle IP-Sperren geschrieben wird?
 
ich würde es mit php cookies machen, dann musst du dich nichts um das löschen und einfügen der IPs kümmern.
wenn ich es richtig verstanden hab, wird es mit cookies auch nur ein sehr kleines script, ohne großen aufwand:
Code:
zeit prüfen 
{
hat der besucher heute noch kein cookie bekommen
{
spruch hohlen;
cookie setzten;
}
}
 
Aber wie mach ich es, dass gleichzeitig aus Tabelle Sprüche ausgelesen wir und in Tabelle IP-Sperren geschrieben wird?
Warum gleichzeitig? Das machst Du natürlich hintereinander. Zuerst den Spruch lesen und danach die Tabelle IP-Sperren schreiben.

Gruß thuemmy

P.S. Bei der IP-Sperren-Lösung solltest Du Dir auch ein Script machen, dass Du einmal im Monat, oder so, aufrufst, um die alten Datensätze zu löschen.

Aber je länger ich mir das durch den Kopf gehen lasse, dann wäre eine Cookie-Lösung die bessere Wahl. Ich glaube nicht, dass es soviele I-Net-Nutzer gibt, die die Annahme von Cookies abgeschaltet haben.
 
Danke

und selbst wenn sie die cookies abgeschaltet haben, dann können Sie halt dieses Tool nicht benutzen ^^

Ich werd mal schaun, was ich zustande bringe.
Sollte was nicht klappen und ich keine Lösung auf eigene Faust finden kann, meld ich mich wieder

Nochmals danke.
Ohne die Hilfe würd ich immernoch dasitzen und überlegen ^^
 
So

Habe jetzt viel daran herumgebastelt und einiges auf die Beine bekommen
Aber folgender Fehler trat auf:

Wenn ich einen Glückskeks öffne und diesen meinetwegen um 23:00 angefordert habe, dann hab ich um 0:00 ja wieder die möglichkeit einen neuen zu holen
soweit funktioniert meins criot
jetzt der fehler
wenn eine IP 2mal in meiner Tabelle vorkommt, dann kann diese IP sich unendlich viele Sprüche abholen.

Ich habe schon viel rumprobiert, aber warscheinlich ist die Lösung sooo einfach, dass ich mir ans Hirn klatschen werd, wenn ich die Lösung habe.

Also hier der Quelltext:
http://hesostein.he.funpic.de/PlayHouse/txt/quelle_cookie.txt

Ich weiss zwar, woran es liegt, aber ich weiss nicht, wie ich den Fehler beheben kann ....
da er ja von OBEN nach UNTEn die Tabelle durchliest und die IP 127.0.0.1 eben mit dem Datum 23.06.2009 als erstes kommt dann lässt er einen neuen anfordern
aber dann ist ja 23.06.09 immernoch ID 1 ... daran ändert sich ja nix
und ich hab sogar schon eingestellt, dass nur
"INSERT **** WHERE ip = '$ip'" ... aber sogar das funtzt irgendwie nicht ....
also das seht ihr ja
da hab ich geschrieben:
PHP:
<?
if($ds->ip == $ip) {
$query = "INSERT INTO cookie_ip *** VALUES *** WHERE ip = '$ip'";
$sql = mysql_query($query);
} else {
$query = "INSERT INTO cookie_ip *** VALUES ***";
$sql = mysql_query($query); 
?>

aber ich weiss net was los is

Hoffe ihr könnt mir wiedermal weiterhelfen

Grüsse
Daniel
 
Wenn Du in der Tabelle mehr als einen Datensatz mit der gleichen IP-Adresse hast, dann ist Deine Tabelle falsch. Das darf nicht sein. Du sollst ja nur dann ein INSERT machen, wenn noch kein Datensatz mit dieser IP vorhanden ist. Also dürfte noch kein Datensatz mit gleicher IP-Adresse da sein.

Gruß thuemmy
 
also
wenn das datum von heute 24.06.2009 nicht dem datum entspricht, welches in der tabelle steht bsp. 23.06.2009, dann soll er diesen eintrag aktualisieren ... aber stattdessen legt er einen neuen datensatz an ... obwohl ich INSERT INTO WHERE gemacht habe -.-***
 
-.-*
wie gesagt
Die Lösung ist so simple, dass ich mir aufs Hirn klatschen werd, wenn ich die Lösung hab ..
danke ^^
 
Zurück
Oben