Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP / Wer kennt sich mit Sessions aus?

Empfohlene Antworten

Veröffentlicht

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?

geht nur mit zwischenspeichern in ner datenbank. ;)

lasse mich aber gerne eines besseren belehren... :)

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?

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

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.

ich hör mich nochmal um

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

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.

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?

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.

@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. :D

[/btw]

:D

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

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.