php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.02.2005, 12:39  
Gast
 
Beiträge: n/a
Standard Zwei Sessions - ein Client?!

Hallo Leute!
Ich programmiere grad ein Browser-RPG (auch wenn es einige gibt, die das sicher als Zeitverschwendung ansehen - Gruss an Ben...) und habe ein kleines Problem mit Sessions, vielleicht könnt ihr mir ja helfen. Wenn ein Spieler sich anmeldet, werden seine Daten in einer Session gespeichert (funktioniert auch problemlos) und gleichzeitig in einer MySQL-Tabelle "useronline" seine IP und sein Name (damit man sehen kann, wer gerade online ist: auch dies funktioniert problemlos). Kritisch wird das Ganze nun, wenn ich mich von einem Rechner (Client) zweimal einlogge. Ich habe zwar eine Sicherheitsabfrage drin, dass man einen Loginaccount nur einmal verwenden kann, nehme ich aber einen anderen Useraccount, greift diese Sicherheitsabfrage nicht und der zweite User überschreibt mit seinen Daten die Session des ersten... Prinzipiell möchte ich aber, dass man sich von einem Rechner mit mehreren Accounts (n-mal) einloggen kann (während der Entwicklung primär, um die Multiplayer-Funktionen zu testen) und ich habe auch schon Webanwendungen gesehen, bei denen dies problemlos möglich ist. Für Hilfe wäre ich dankbar!
Ach so: ich verwende einen aktuellen XAMPP (Apache 2.0.54) mit PHP 4.3.3 (die Skripte laufen noch nicht unter PHP 5!) und MySQL 4.1. Der Entwicklungsserver läuft unter XP SP2, später wird ein Linux-Server (Webserver) eingesetzt werden.

MfG, Zedda
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.02.2005, 12:50  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

tip 1 mehrere browser installieren, weil ne andere lösung meiner meinung nach nicht sauber wird, weil eben die sessionid eindeutig sein soll.

firefox, mozilla, IE, netscape, opera sind schonmal 5 dinge die du gleichzeitig benutzen kannst, von manchen kannst du ohne probs mehrere verscheidene versionen installieren, bringt vor allem den vorteil, dass du das system aus sicht anderer browser auch mal siehst und auf eventuelle bugs aufmerksam wird.
robo47 ist offline   Mit Zitat antworten
Alt 28.02.2005, 13:09  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von robo47
tip 1 mehrere browser installieren, weil ne andere lösung meiner meinung nach nicht sauber wird, weil eben die sessionid eindeutig sein soll.

firefox, mozilla, IE, netscape, opera sind schonmal 5 dinge die du gleichzeitig benutzen kannst, von manchen kannst du ohne probs mehrere verscheidene versionen installieren, bringt vor allem den vorteil, dass du das system aus sicht anderer browser auch mal siehst und auf eventuelle bugs aufmerksam wird.
Zum Testen ist der Vorschlag ok und Firefox und IE habe ich sowieso am Start, allerdings möchte ich erreichen, dass bei jedem Login eine eindeutige Session-ID vergeben wird (die meinetwegen auch in der DB gespeichert wird), ohne dass eine bereits vorhandene überbügelt wird. Anwenderseitig kann man aber mehrere Browser wohl kaum zumuten, daher wäre mir eine echte Sessiontrennung lieber...

MfG, Zedda
  Mit Zitat antworten
Alt 28.02.2005, 13:23  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

tja und woher weis der browser von einer eindeutigen sessionid?
entweder von einem cookie, das bei 2 logins da es gleich heist, überschrieben wird, oder der angehängten SESSIONID, dann musst du aber überall bei jedem link, jedem javascript-popup, bei jedem formular oder sonstwas, die session-id mit übergeben / weitergeben. ist geschmackssache, ob mein sein system nur des testens wegen so umschreiben will, weil mittels session.trans_sid bekommt man nur an interne links und intern versendet formulare, wenn z.b. mit absoltue urls gearbeiet wird, muss das alels wieder umgeschrieben werden, javascripts musst man es manuell übergeben etc.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 28.02.2005, 14:10  
Gast
 
Beiträge: n/a
Standard

Ich weiss zwar nicht ob das Dein Problem löst, aber warum überhaupt mit 2 Sessions arbeiten ?

ich denke mal Du hast z.B. eine Sessionvariable mit Name $_SESSION["user"].

Jetzt mein Lösungsvorschlag

Beim Login wird geprüft ob es die Session-Variable $_SESSION["maxid"] gibt. Wenn ja addiere 1 in den Inhalt, wenn nein starte mit 1. Diesen Wert speicherst Du Dir in der Variablen $meineid und die gibst Du immer an alle Seiten mit

Du legst Dir dann nicht $_SESSION["user"] an sondern $_SESSION["user_1"]

Wenn er sich jetzt mit einer zweiten Browsersitzung anmeldet wird maxid um 1 wieder erhöht. Beinhaltet also 2. Und dort wird dann $_SESSION["user_2"] angelegt.

Da innerhalb jedes Browsers die dort ermittelte Zahl weitergegeben wird kann es keine überschneidungen geben
  Mit Zitat antworten
Alt 28.02.2005, 14:23  
Gast
 
Beiträge: n/a
Standard Re: Zwei Sessions - ein Client?!

Zitat:
Zitat von Zedda
Kritisch wird das Ganze nun, wenn ich mich von einem Rechner (Client) zweimal einlogge. Ich habe zwar eine Sicherheitsabfrage drin, dass man einen Loginaccount nur einmal verwenden kann, nehme ich aber einen anderen Useraccount, greift diese Sicherheitsabfrage nicht und der zweite User überschreibt mit seinen Daten die Session des ersten...
Das passiert nur dann, wenn Du Prozeßkekse verwendest, weil dann Browserfenster 2 denselben Keks wie Browserfenster 1 schickt.

Setze während der Entwicklungsphase session.use_cookies auf 0 und session.use_trans_sid auf 1.

Wer Session und mysqlbasierte Userauthentifizierung nutzt, sollte auch daran denken:
http://de.php.net/session_set_save_handler

Was ich nicht verstehe ist, warum Du das Script nicht auf einer Maschine entwickelst, auf der das Zielsystem nachgebildet wird.
  Mit Zitat antworten
Alt 28.02.2005, 19:51  
Gast
 
Beiträge: n/a
Standard Re: Zwei Sessions - ein Client?!

Zitat:
Zitat von meikel
Das passiert nur dann, wenn Du Prozeßkekse verwendest, weil dann Browserfenster 2 denselben Keks wie Browserfenster 1 schickt.

Setze während der Entwicklungsphase session.use_cookies auf 0 und session.use_trans_sid auf 1.

Wer Session und mysqlbasierte Userauthentifizierung nutzt, sollte auch daran denken:
http://de.php.net/session_set_save_handler

Was ich nicht verstehe ist, warum Du das Script nicht auf einer Maschine entwickelst, auf der das Zielsystem nachgebildet wird.
Ich denke, dass ist genau mein Problem: Prozeßkekse! Werde heute abend beides mal ausprobieren: session.use_cookies auf 0 / session.use_trans_sid auf 1 sowie den Vorschlag von harkne, falls es funktionieren sollte (denn das ist eigentlich in die Richtung, wie ich es mir vorstelle).

@meikel: Leider ist mein Linux-Server vor einem halben Jahr abgeraucht und seitdem entwickle ich zuhause nur noch komplett unter XP (sollte im Prinzip ja vom Apache keinen Unterschied machen; oder?!), das läuft wenigstens und bisher hatte ich auch noch keine Probleme, wenn ich meinen Code auf Linux-Server transferiert habe...

Eine kleine Zusatzfrage: wenn doch alle Dateien sowieso auf einem Server liegen (es werden z.B. auch keine Bilder von einem anderen Server nachgeladen), warum sollte man nicht standardmäßig session.use_trans_sid auf 1 setzen (schließlich gibt es genug Leute, die Cookies nicht zulassen) ?

MfG, Zedda
  Mit Zitat antworten
Alt 28.02.2005, 20:34  
Gast
 
Beiträge: n/a
Standard Re: Zwei Sessions - ein Client?!

Zitat:
Zitat von Zedda
Ich denke, dass ist genau mein Problem: Prozeßkekse! Werde heute abend beides mal ausprobieren: session.use_cookies auf 0 / session.use_trans_sid auf 1 sowie den Vorschlag von harkne, falls es funktionieren sollte (denn das ist eigentlich in die Richtung, wie ich es mir vorstelle).
Der Vorschlag betrifft NUR die Entwicklung! Auf der "Produktionskiste" sollte session.use_cookies = 1 und session.use_trans_sid = 0 eingestellt sein.

XP:
Zitat:
(sollte im Prinzip ja vom Apache keinen Unterschied machen; oder?!), das läuft wenigstens und bisher hatte ich auch noch keine Probleme, wenn ich meinen Code auf Linux-Server transferiert habe...
Es gibt da leider ein paar Unterschiede, an die man denken sollte.

Falls Du halbwegs professionell arbeiten willst, dann vervollständige Deine Linuxkenntnisse und miete Dir einen Rootserver. Eine DSL-Flatrate hat man als Entwickler sowieso.

Zitat:
Eine kleine Zusatzfrage: wenn doch alle Dateien sowieso auf einem Server liegen (es werden z.B. auch keine Bilder von einem anderen Server nachgeladen), warum sollte man nicht standardmäßig session.use_trans_sid auf 1 setzen (schließlich gibt es genug Leute, die Cookies nicht zulassen) ?
Mit diesem Automatismus gibt es unter Umständen einige Probleme, wenn PHP selbständig in den Links rumwuselt.
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zum eigenen Lernen: FTP Client für Filezilla dh1sbg PHP Tipps 2007 1 09.04.2007 10:57
Bildschirmschoner auf dem Client beenden superbike PHP-Fortgeschrittene 11 31.10.2006 19:54
2 Sessions Kein Genie PHP Tipps 2006 8 21.07.2006 15:45
Client does not support authentication protocol... snoopiline Datenbanken 3 19.07.2006 13:53
Sessions verfallen sofort der.Chris PHP Tipps 2006 4 10.01.2006 18:46
[Erledigt] probleme mit sessions PHP Tipps 2007 1 17.11.2005 10:43
Nach Einfügugng der Sessions funktioniert mein Program nicht PHP-Fortgeschrittene 1 02.10.2005 06:13
Stabilität von SOAP (client) unter PHP5 ? Infos gesucht. PHP-Fortgeschrittene 5 13.09.2005 07:01
Sessions! DER_Brain PHP Tipps 2005-2 5 30.06.2005 14:51
2 Sessions? PHP Tipps 2005 5 29.04.2005 19:04
Proble mit Sessions PHP Tipps 2005 7 07.02.2005 17:42
IE der die sessions nicht so akzeptiert wie er soll robo47 Off-Topic Diskussionen 0 27.01.2005 11:26
Sessions werden automatisch an Links angehängt PHP-Fortgeschrittene 3 10.12.2004 13:50
[Erledigt] Usermanagement mit Sessions - Sicherheitsprobleme ? PHP Tipps 2004 0 30.06.2004 09:49
Sessions, sessions und nochmal sessions PHP-Fortgeschrittene 0 06.06.2004 00:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php session client, php zwei sessions, php zwei verschiedene sessions, php 2 sessions gleichzeitig, mehrere verschiedene sessions php, php sessions zwei, php client keine session, mozilla session erhöht variable doppelt, php session id client, session variable mehrere explorer, zend framework session trans_sid, php soap session, zwei sessions von ein client, session_id firefox ansehen, ein client mit mehreren sessions, nicht mit null session anmelden, php sessions auf client, php session soll nach halber stunde verfallen, mozilla,verschiedene session ids

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.