Krain Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 Hallo zusammen, Ich programmiere gerade ein Webgame. Die Userverwaltung geschieht über Sessions. Ich möchte verhindern, dass der User mit Strg+N ein neues Fenster öffnet und so auf beiden Fenstern gleichzeitig arbeitet. Ich dachte eigentlich, dass jedes Fenster eine eigene Session_id hat. Dem ist allerdings nicht so. Ich habe mir die session_id in der Session gespeichert. Und frage ab: if($_SESSION[session] != session_id()) Beide sind allerdings immer gleich, auch wenn ich über Strg+N ein neues Browserfenster öffne. Kann mir bitte einer weiterhelfen, wie ich es verhindern kann, dass ein User mehrere Browserfenster verwendet? Egal mit welchen mitteln. Datenbank, Textfile, o.ä. Ich dachte vielleicht irgendwie an eine andere Unique-ID. ---------------------------------------------------------------------------------- <!-- login.php --> <? session_start(); if(!$_SESSION[user_id] || $_SESSION[time] < time() - 10*60) { eval ("\$output = \"".gettemplate("login")."\";"); die($output); } $time = time(); session_register("time"); ?> ---------------------------------------------------------------------------------- <!-- user.php --> <? include "../db.inc.php"; include "functions.php"; if($send) { $marke = proofUser($nick,$pass,$conn); if($marke == -1) { $msg = "Der User ist ungültig."; } else if($marke == -2) { $msg = "Das Passwort ist ungültig."; } else { session_start(); $session = session_id(); $user_id=$marke; $user_password=md5($pass); $time = time(); session_register("session"); session_register("user_id"); session_register("user_password"); session_register("time"); $msg = "Sie wurden erfolgreich eingeloggt."; } eval ("\$output = \"".gettemplate("refresh")."\";"); echo $output; } ?> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
root@localhost Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 Hey Kannn man das vielleichst mit JavaScript lösen? Mit sowas ähnlichem wie " if(window.event.ctrlKey) ... " Ciao r##t Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Krain Geschrieben 30. Januar 2004 Autor Teilen Geschrieben 30. Januar 2004 Hab ich mir auch schon überlegt ob ich die Tastenkombination STrg+N einfach abfange. Aber was ist dann mit der Möglichkeit "Link im neuen Fenster öffnen" ?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 Original geschrieben von root@localhost Hey Kannn man das vielleichst mit JavaScript lösen? Mit sowas ähnlichem wie " if(window.event.ctrlKey) ... " Ciao r##t Das funktioniert aber bisher leider nur bei MSIE. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 Am besten du arbeitest mit einem LogIn ohne Sessions und Cookies. Dann kannst du einen User, der versucht, sich das zweite Mal anzumelden, abweisen. Du könntest auch die Remoteadresse auslesen und anhand derer feststellen, ob der User bereits angemeldet ist. Allerdings hast du dann mit denen, die ein Gateway benutzen, das Problem, dass die die gleiche Remoteadresse haben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Krain Geschrieben 30. Januar 2004 Autor Teilen Geschrieben 30. Januar 2004 Original geschrieben von computercrustie Am besten du arbeitest mit einem LogIn ohne Sessions und Cookies. Dann kannst du einen User, der versucht, sich das zweite Mal anzumelden, abweisen. Du könntest auch die Remoteadresse auslesen und anhand derer feststellen, ob der User bereits angemeldet ist. Allerdings hast du dann mit denen, die ein Gateway benutzen, das Problem, dass die die gleiche Remoteadresse haben. Das habe ich bereits gemacht. Es ist aber trotzdem möglich durch Strg+N ein neues Fenster zu öffnen und auf dem auch zu agieren. Bekommt man nicht irgendwoher ne eindeutige ID des Browserfensters? Ich dachte eigentlich das geht über session_id(). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Deagle--Knight Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 also deine sicherheitsmaßnahme in allen ehren ... ich bin auch dabei ein game zu programmieren, jedoch mache ich das anders. undzwar läuft auch alles über sessions, weil ich so die infos schneller transportieren kann ... fenster können die sich dumm und dämlich machen ... nur wenn die funktion die sie aufrufen wollen bsp. 2 mal gleichzeitig bauen wird ein kleines loading fenster auftauchen ... dort werden alle befehle ausgeführt und alles nochmal aktualisiert ... damit überschneiden die sich und nur eins kann ausgeführt werden ... somit sind cheater da ein wenig eingehembt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 Hallöle! Benutz doch ein JavaScript-Popup-Window: Auf der Startseite ein Link, der das eigentliche Spiel dann in einem Popup-Window macht. Dort am besten gleich Menüleiste deaktivieren. Beim Laden der Seite überprüfst du immer über Javascript (body-OnLoad), dass das Vater-Fenster deine Startseite ist (window.parent oder sowas, hab's nicht im Kopf). Wenn nicht, dann sollte die Seite (auch per Javascript, da die Überprüfung erst auf Clientseite geschieht) weitergeleitet werden. Externe Links musst du halt mit target="_blank" im a-Tag definieren. HTH kLeiner_HobBes (& Sillie) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Deagle--Knight Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 funktioniert nur leider nicht, weil wenn man strg+n macht ist das neue fenster wieder parent ... und damit ist das problem weiterhin da ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Krain Geschrieben 30. Januar 2004 Autor Teilen Geschrieben 30. Januar 2004 Original geschrieben von Astarion funktioniert nur leider nicht, weil wenn man strg+n macht ist das neue fenster wieder parent ... und damit ist das problem weiterhin da ... so sehe ich das auch Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 Wo ist das Problem? Gib der Startseite, also dem wichtigen Parent, irgendeine Eigenschaft, die eindeutig ist. Die fragst du dann über DOM ab. mfg kLeiner_HobBes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Krain Geschrieben 30. Januar 2004 Autor Teilen Geschrieben 30. Januar 2004 @asterion Du hast ja recht. Aber wenn man das alles im vorfeld verhindern könnte wäre es wesentlich weniger abfrageaufwand, meinst du nicht. Wenn es allerdings nicht geht muss ich damit leben! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Krain Geschrieben 30. Januar 2004 Autor Teilen Geschrieben 30. Januar 2004 Original geschrieben von kLeiner_HobBes Wo ist das Problem? Gib der Startseite, also dem wichtigen Parent, irgendeine Eigenschaft, die eindeutig ist. Die fragst du dann über DOM ab. mfg kLeiner_HobBes Genau das ist es was ich meine. Kann ich einem Browserfenster irgentwie eine eindeutige ID geben? Wenn ja wie? Es müsste allerdings sichergestellt sein, das wenn ein neues Fensterüber Strg+N geöffnet wird es nicht wieder die gleiche ID ist! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Deagle--Knight Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 hmmm also ich wüsste auser ne "loading" funktion die functionen ausführt und somit doppel-arbeiten unterdrückt auch nichts mehr ... das einzige was man abfragen könnte währe die größe des fensters .... und wenn das sich verändert, was sich bei strg+n auf jedenfall macht, könntest du die session killen .... jedoch ist er dann ganz aus dem spiel ... oder du machst halt if(windowhigh.change) { echo "Sie haben versucht das Spiel in einem anderen Fenster zu spielen"; } else { code; } variablen sind jetzt nur ausgedacht ... aber denke würde halöbwegs funktionieren ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Krain Geschrieben 30. Januar 2004 Autor Teilen Geschrieben 30. Januar 2004 Warum sollte sich die Fenstergröße ändern? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Deagle--Knight Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 wenn du ein neues fenster aufrufst verändert sich die größe weil automatisch die navigation, bzw. die menüleiste eingeschaltet wird Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Krain Geschrieben 30. Januar 2004 Autor Teilen Geschrieben 30. Januar 2004 ach so - ja dann ist es natürlich eine Möglichkeit. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 Ich meinte folgendes: if (opener.document.URL != "URL des richtigen Vater-Fensters") self.location = "cheater.html"; // oder ähnliches und dieses Code-Schnipsel im onLoad von Body ausführen. mfg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Krain Geschrieben 30. Januar 2004 Autor Teilen Geschrieben 30. Januar 2004 Und das funktioniert? Mit dem String meinst du die eindeutige Kennung des Vaterfensters? Von Javascript hab ich nicht ganz so die Ahnung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Deagle--Knight Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 und jeder der cheaten will gerade bei browsergames macht javascript aus ... von daher ist es schwachfug hier mit javascript rumzufuchteln ... das muss halt irgendwie mit php gehen ... und ich denke mal, das die changeWindows variante wohl am besten geeignet wähe ... Edit: du musst dann halt noch die größe des browserfensters angeben ... sonst klappt das nicht mit der überprüfung ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 30. Januar 2004 Teilen Geschrieben 30. Januar 2004 So, und was ist denn die Variante mit der Fenstergröße? Etwa kein JavaScript???:eek: [edit]Ich hab meine Lösung mal eben ausprobiert... scheint nicht zu funzen, denn bei STRG+N kopiert er auch sämtliche DOM-Daten ins neue Fenster rüber, also auch die Daten des Vater-Fensters. mfg Benjamin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Krain Geschrieben 30. Januar 2004 Autor Teilen Geschrieben 30. Januar 2004 Original geschrieben von kLeiner_HobBes So, und was ist denn die Variante mit der Fenstergröße? Etwa kein JavaScript???:eek: [edit]Ich hab meine Lösung mal eben ausprobiert... scheint nicht zu funzen, denn bei STRG+N kopiert er auch sämtliche DOM-Daten ins neue Fenster rüber, also auch die Daten des Vater-Fensters. mfg Benjamin Das hab ich mir gedacht - Aber danke für deine Hilfe. Dann muss ich wohl etwas Unsicherheit zulassen - wird wohl nicht anders gehen! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.