PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Über neue private Nachricht informieren (http://www.selfphp.de/forum/showthread.php?t=12903)

koerschgen2001 14.03.2006 12:06:32

Über neue private Nachricht informieren
 
Ich würde gerne eine Funktion schreiben die anzeigt wenn ein User eine neue private Nachricht hat.


Man könnte in jeder Seite, eine Datenbankabfrage ausführen die prüft ob neue Nachrichten vorhanden sind.
Halte ich aber für zu umständlich, außerdem wird damit wieder die Datenbank belastet.

Eine Idee wäre wenn der Benutzer angemeldet ist, eine Session Variable zu registrieren ($_SESSION["newmessage"]),
wenn der Benutzer eine neue Nachricht erhalten hat. Da sowieso auf jeder Seite gepüft wird ob der Benutzer
angemeldet ist könnte ich das direkt mit der Überprüfung einer neuen Nachricht kombiniern.
Sollte das der Fall sein wird auf der Seite angezeigt dass eine neue private Nachricht vorhanden ist.

Das Problem an der Sache ist, dass das script zum hinzufügen einer neuen Nachricht ja vom
Absender(und damit von seiner Session) gestartet wird. Um meine Idee zu verwirklichen müsste ich
eine Variable für eine bestimmte Session, die vom Empfänger, registrieren, was bedeuten würde dass ich von außen auf die
Session zugreifen muss, was wohl nicht möglich sein wird(Sicherheitsproblem).

Wie kann ich denn in dieser Richtung eine Lösung finden, oder sollte ich besser komplett umdenken?

vt1816 14.03.2006 21:29:25

AW: Über neue private Nachricht informieren
 
Mit reinem PHP ohne eine Abfrage (egal wie) wird sich nichts machen lassen. Wie soll sonst die Information transportiert werden. Eine Möglichkeit wäre zum Beispiel aber bei einer neuen Nachricht eine Datei (0 Byte) anzulegen (wenn nicht schon vorhanden) und beim Seitenwechsel darauf abzufragen. So umgehst Du jedoch schon mal die Datenbankabfrage. Nicht anders machen es auch die großen Anbietern von Freemail (web.de).

koerschgen2001 14.03.2006 22:38:15

AW: Über neue private Nachricht informieren
 
Die Nachrichten und die Anzahl der neuen werden sowieso in der DB gespeichert.

Das was ich vorhabe ist dass wenn der User eingeloggt ist, sofort angezeigt wird ob dass er eine neue Nachricht hat.

Es muss also nur temporär gespeichert werden dass eine neue Nachricht da ist, also solange der User online ist oder er das Postfach öffnet.

vt1816 14.03.2006 23:00:20

AW: Über neue private Nachricht informieren
 
Wo(bei) ist denn dann Dein Problem?

Der User meldet sich an, eine Funktion schaut in seinem Postfach nach, Post vorhanden (Flag=TRUE) bzw. keine Post vorhanden (Flag=FALSE). Merken des Flags in Cookie bzw. Session bis zur Abmeldung und dann das Flag löschen. Der Traffic auf der Datenbank sollte dabei nicht so groß sein, das sich daraus Probleme ergeben. Es werden sich ja nicht alle (1..1000) User gleichzeitg anmelden und das in der Stunde 60 mal - oder?

koerschgen2001 14.03.2006 23:08:41

AW: Über neue private Nachricht informieren
 
Und was ist wenn der User eine Nachricht bekommt wenn er schon angemeldet ist. Nach dieser Lösung würde er das erst bei der nächsten Anmeldung mitbekommen.

Das nach der Anmeldung zu überprüfen ist ja kein Problem, aber ich möchte das dass auch angezeigt ist, während er online ist. So können 2 User die eingeloggt sind miteinander kommunizieren, da sie direkt sehen wenn sie ne neue Nachricht haben.

meikel (†) 15.03.2006 03:22:44

AW: Über neue private Nachricht informieren
 
Zitat:

Zitat von koerschgen2001
Ich würde gerne eine Funktion schreiben die anzeigt wenn ein User eine neue private Nachricht hat.

Das Fahrrad wurde schon mehrfach erfunden.

Bevor Du lange überlegst:
a. ohne Datenbank geht es nicht.
b. eine Änderung des Sessionmechanismus, daß session_1 mit session_2 Infos austauschen, ist dann möglich, wenn als Speichermedium eine Datenbank eingesetzt wird. http://de3.php.net/session_set_save_handler (Userkommentare)

koerschgen2001 15.03.2006 08:24:58

AW: Über neue private Nachricht informieren
 
Zitat:

Das Fahrrad wurde schon mehrfach erfunden.
Das dachte ich mir auch, habs aber bisher nicht gefunden.

koerschgen2001 16.03.2006 09:44:36

AW: Über neue private Nachricht informieren
 
Zitat:

Das Fahrrad wurde schon mehrfach erfunden.
Wie wurde es denn erfunden. Ein paar Quellen wo ich Beispiele finde wäre nicht schlecht.

Ich könnte mir auch son fertiges Forum (wbb, phpbb...) nehmen und versuchen darin diese Funktion zu finden.

Aber das wird wohl seeeeehr lange dauern.

Besser wäre wenn mit jemand ein Beispiel, Lösungsansatz, etc dafür geben könnte.

Marilu 16.03.2006 15:03:23

AW: Über neue private Nachricht informieren
 
Zitat:

Zitat von koerschgen2001
Besser wäre wenn mit jemand ein Beispiel, Lösungsansatz, etc dafür geben könnte.

Haste doch hier von meikel gekriegt.

koerschgen2001 16.03.2006 15:25:52

AW: Über neue private Nachricht informieren
 
Zitat:

eine Änderung des Sessionmechanismus, daß session_1 mit session_2 Infos austauschen, ist dann möglich, wenn als Speichermedium eine Datenbank eingesetzt wird.
Zitat:

Haste doch hier von meikel gekriegt.
Also doch die Sache mit den Sessions. Dachte nicht dass ich mit meiner Idee direkt eine sinnvolle Lösung treffe.


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:56:56 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.