Zum Inhalt springen

PHP - neues Fenster - gleiche session_id


Empfohlene Beiträge

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;

}

?>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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().

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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):D

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...