Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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?

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

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.

Geschrieben

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?

Geschrieben

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.

Geschrieben

@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

Geschrieben

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

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