webpredator Geschrieben 18. April 2002 Geschrieben 18. April 2002 PHP Frage: Kann ich mir mit Sessions anzeigen lassen, wer gerade online ist? Und zwar ohne, das ich das noch in einer Datenbank zwischenspeichere oder so? Nur aufgrund der aktiven Sessions? Beispiel: Ich habe 20 User online, 5 davon haben zu ihrer SessionID bereits die Variable "eingeloggt" bekommen, sind also Mitlieder. Wie kann ich das jetzt auslesen, so das ich hinterher auf der Webseite ausgeben kann: 20 Personen online, davon 5 eingeloggt? Zitieren
shad0w Geschrieben 18. April 2002 Geschrieben 18. April 2002 geht nur mit zwischenspeichern in ner datenbank. lasse mich aber gerne eines besseren belehren... Zitieren
webpredator Geschrieben 18. April 2002 Autor Geschrieben 18. April 2002 OK, weißt du dann, wie ich die Sessionvariablen in der Datenbank speichere? Ich weiß, das ich das in der php.ini einstellen kann, aber da komme ich ja nicht dran, ist ja auf nem Server von einem Provider (Puretec). Kann man das vielleicht zur Laufzeit ändern, wo die Sessionvariablen gespeichert werden? Zitieren
bohni Geschrieben 18. April 2002 Geschrieben 18. April 2002 machste dir ne seite, in der nur phpinfo() steht.also: <?php echo phpinfo(); ?> da steht dann irgendwo, wie die sessionvariable heisst, wird wahrscheinlich PHPSESSID, oder so, heissen. huch, das war ja gar nicht gefragt. aber ich bezweifle, dass du die daten ändern kannst. das zählen der user wird nicht einfach, d. h. das zählen schon. aber wie willst du rausfinden, dass er wieder offline ist, wenn er einfach den browser schliesst. da bleibt die session nämlich bis zum timeout bestehen (standard 60 min). Zitieren
webpredator Geschrieben 18. April 2002 Autor Geschrieben 18. April 2002 Danke, aber phpinfo() nützt mir nicht viel, ich weiß wie meine Session heißt und wie die Einstellungen der PHP.ini sind. Aber so komm ich nicht weiter. Ach verdammt, wie machen denn das die größeren Projekte im Internet? Das kann doch nicht so schwer sein, verdammich. Die haben wahrscheinlich eigene Server und stellen ihre PHP.ini automatisch auf die Datenbank ein. Mist. Naja. Ich überleg mir was. Zitieren
shad0w Geschrieben 18. April 2002 Geschrieben 18. April 2002 hier gibt es weitere infos zu sessions: http://www.phpbuilder.com/columns/mattias20000105.php3 http://www.phpbuilder.com/columns/mattias20000312.php3 im uebrigen heisst die variable $_SESSION -> www.php.net/sessions den session_path kannst du wie du schon sagtest in der php.ini setzen. ich empfehle c:\php\sessions oder so. muss halt ein verzeichniss sein, dass es gibt. session id's kannst du in einem varchar speichern. wie lange der sein muss weiss ich atm. net auswendig, da muesste ich morgen nachschauen... nen schoenen abend noch. Zitieren
bohni Geschrieben 19. April 2002 Geschrieben 19. April 2002 Die Userdaten (du hast ne ID bei der Registrierung bekommen) werden in der Datenbank gespeichert. Dann wird beim Log-In ein Cookie gesetzt, dass anzeigt, ob Du eingeloggt bist, oder nicht. Bei einem erneuten Aufruf der Seite wird anhand des Cookies geschaut, ob Du online (Cookie da) oder Offline (Cookie weg) bist. Wenn Du dich ausloggst oder den Browser schliesst, wird Du nach einem definiertem Timeout aus der Datenbank wieder gelöscht, und bist somit nicht mehr online. Das Timeout kannst Du ja über ein Script relaisieren, dass alle 5 Minuten zum Beispiel alle die User aus der Datenbank feuert, deren Onlinezeit überschritten ist. @silencer: Standardmäßig heisst die Sessionvariable PHPSESSID, Du kannst die natürlich auch umbenennen, besonders dann, wenn Du für Session keine Cookies benutzen kannst und Du die immer im Link mitschleppen musst. Zitieren
webpredator Geschrieben 20. April 2002 Autor Geschrieben 20. April 2002 Tja, das ist nämlich die große Frage: Würdet ihr eine Seite erstellen, die sich definitiv auf Cookies verläßt? Also ein Einloggen nicht möglich ist, wenn keine Cookies auf dem User-System erlaubt sind? Ich mach das bei meiner Seite erstmal so (Online-Sammelkartenspiel) und überleg mir später nochwas. Aber die Sessions in der Datenbank speichern kann ich nicht, wenn ich keinen Zugriff auf die PHP.ini habe, oder kann mich jemand eines besseren belehren? Zitieren
bohni Geschrieben 20. April 2002 Geschrieben 20. April 2002 Die Cookies sind ja eigentlich nur zur Wiedererkennung da, Du bist dann sofort eingeloggt, so wie hier in diesem Forum. Dort würde dann die User-ID drin stehen. Die Cookies sind sozusoagen nur ein Komfort-Detail. Die Session kannst Du doch selbst in die Datenbank speichern, die PHPSESSID hast Du, dazu nimmste noch die User-ID und noch einen timestamp und speicherst das alles in eine Datenbank-Tabelle. Ein anderes Script wird zum Beispiel alle 5 Minuten ausgeführt, welches anhand des Zeitunterschiedes zwischen der aktuellen Uhrzeit und den Timestamps in der Datenbank überprüft, welcher Datensatz gelöscht werden kann. Wenn der Unterschied halt grösser 5 Minuten ist, werden halt alle die Datensätze gelöscht, bei denen dieser Umstand zutrifft-und schon sind die offline. So könnte man das zum Beispiel realisieren. Zitieren
shad0w Geschrieben 21. April 2002 Geschrieben 21. April 2002 @bohni: PHPSESSID war mal... also ich denke mal dass ich das richtig gelesen habe auf der page, und da steht als standart variable $_SESSION... so long [btw] schreibfehler koennt ihr fuer euch behalten. hab ne flasche weisswein intus. [/btw] Zitieren
bohni Geschrieben 21. April 2002 Geschrieben 21. April 2002 @silencer: $_session stimmt, ist ein asso-array in php, in dem sich alle registrierten Session-Variablen befinden, wenn ich das richtig erkannt habe (so früh am Morgen ) Ich meinte aber nur die ID, diese steht in der Server-Variable vom Apache/IIS namens PHPSESSID. Und diese kannste in der php.ini ändern, wenn man Rechte dazu hat. Zitieren
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.