


So implementieren Sie die Funktion für private Nachrichten auf der Site in PHP
So implementieren Sie die Funktion für private Nachrichten in der Site in PHP: 1. Lesen Sie den Anforderungstext der POST-Anfrage. 2. Rufen Sie das Untermodul auf, um die Site-Nachricht einzufügen, die an die gesamte Site oder die Benutzergruppe, zu der sie gehört, gesendet wird 3. Ermitteln Sie die Anzahl der ungelesenen Site-Nachrichten. 4. Überprüfen Sie, ob die Nachrichten-ID zum aktuellen Benutzer gehört. 5. Implementieren Sie einfach die Stapellöschung.
Die Betriebsumgebung dieses Artikels: Windows7-System, PHP7.1-Version, DELL G3-Computer
Wie implementiert PHP die Funktion für private Nachrichten auf der Website?
PHP-Implementierung von Ideen und Lösungen für das Design von Site-Nachrichten
1. Hintergrund
Wenn Benutzer der Betriebs- und Wartungsplattform derzeit kommunizieren, verlassen sie sich derzeit mehr auf WeChat und E-Mail-Benachrichtigungen, während die Betriebs- und Wartungsplattform Als Ganzes benötigt das Produkt auch einen Dienst, der die interne Kommunikation durchführen kann – Intra-Site-Messaging.
Der Designton von On-Site-Nachrichten
Der Designton von On-Site-Nachrichten hängt davon ab, wie Benutzer On-Site-Nachrichten verwenden:
Benutzer halten sich nicht an die Betriebs- und Wartungsplattform Seite, warten Sie auf Nachrichtenbenachrichtigungen und sehen Sie sich den Nachrichteninhalt an, und springen Sie dann zu der Seite, die Sie bedienen möchten.
Mit anderen Worten, Vor-Ort-Nachrichten sind nicht der erste Zugang, und die Echtzeitnatur von Vor-Ort-Nachrichten ist nicht von großer Bedeutung.
Im Gegensatz zu vielen Social-Networking-Sites (Facebook, Zhihu, Weibo usw.) bleiben Benutzer auf der Hauptseite der Social-Networking-Site, aktualisieren ständig neue Inhalte und prüfen neue Nachrichten (hauptsächlich persönliche private Nachrichten anderer Personen). (Antworten usw.) Es ist definitiv nicht erforderlich, die Systembenachrichtigungsnachricht zu überprüfen.)
Der Benutzer entscheidet anhand der E-Mail-Benachrichtigung, ob er die Betriebs- und Wartungsplattform für den Betrieb betritt.
Wenn es besonders viele gibt B. E-Mails, gibt es mehrere Arbeitsaufträge, die vom Benutzer gleichzeitig bearbeitet werden müssen. Benutzer führen alle Arbeiten auch auf der Seite „Meine Aufgaben“ durch, die von der Arbeitsauftragsplattform bereitgestellt wird.
Wenn die E-Mail versehentlich gelöscht wird und kein E-Mail-Link vorhanden ist, um direkt auf das zu bedienende Modul zuzugreifen
Dann können Sie entweder auf die dafür vorgesehene Seite gehen, indem Sie nach einem Link/einer Ticketnummer fragen
-
oder fahren Sie direkt im entsprechenden Modul „Suche“ fort
Die obigen Beschreibungen bedeuten, dass Benutzer grundsätzlich keine On-Site-Nachrichten verwenden. Unter welchen Umständen werden sie On-Site-Nachrichten verwenden?
Senden Sie keine E-Mails, sondern nur Nachrichtenbenachrichtigungen für standortinterne Nachrichten, z. B. standortweite Benachrichtigungen, Bearbeitungsvorgänge, Kommentarvorgänge usw.
-
Wenn für ein bestimmtes Modul kein detaillierter Vorgangsdatensatz vorhanden ist, Sie können die Häufigkeit des Auftretens von standortinternen Nachrichten überprüfen
Derzeit gibt es nur Benachrichtigungen zu Produktneuigkeiten und die Anzeige von Nachrichten wird in Zukunft nicht kategorisiert und aggregiert, wenn Sie Benachrichtigungen, Erwähnungen, Likes und Kommentare auf der gesamten Website hinzufügen und andere Arten von In-Site-Nachrichten müssen Sie darüber nachdenken, Nachrichten nach Typ zu aggregieren.
2. Beschreibung der Anforderungen
In-Site-Nachrichten müssen normalerweise zwei Anforderungen erfüllen:
-
In-Site-Nachrichten von Benutzern an Benutzer und In-Site-Nachrichten von Administratoren an Benutzer : Das heißt, Eins-zu-Eins-Senden
Vor-Ort-Nachrichten des Administrators an mehrere Benutzer, Benutzergruppen und die gesamte Site: Das heißt, Eins-zu-Viele-Senden
(Es gibt auch eine In -Site-Nachricht von Benutzern zu Produkten, z. B. Feedback und Fragen zu einem bestimmten Modul usw.)
Unsere aktuellen Anforderungen sind:
1 Der Administrator sendet Intra-Site-Nachrichten an mehrere Benutzer
Keine Überprüfung der Benutzerauthentizität
Begrenzen Sie die Titellänge und die Inhaltslänge (jeweils 45 Bytes, 150 Bytes, entsprechend 15 und 50 chinesischen Schriftzeichen)
Begrenzen Sie die Pinyin-Länge des Empfängers (maximal 50 Bytes)
[Empfohlenes Lernen: „PHP-Video Tutorial"]
2 Benutzer können ihre eigenen Site-Nachrichten anzeigen
Filtern nach „Alle, Gelesen, Ungelesen"
Kategorisiert nach Nachrichtenquelle: Arbeitsauftragsplattform, Ressourcenverwaltung, automatische Installation, Schwachstellenplattform, Fehlerplattform. . .
3 Benutzer können Site-Nachrichten löschen, stapelweise löschen
4 Benutzer können alle Site-Nachrichten lesen, stapelweise lesen und als gelesen markieren
5 Das Nachrichtensymbol oben auf der Seite der Betriebs- und Wartungsplattform
zeigt ungelesene Nachrichten an. Die Anzahl der Nachrichten. Wenn sie 99 überschreitet, werden 99+ angezeigt. „Quelle“, „Titel“)
Dropdown-Feld Es gibt zwei Schaltflächen unten: „Mehr“, um weitere ungelesene Nachrichten zu laden; „Alle anzeigen“, um zur Seite mit der Nachrichtenliste der Website zu springen (am besten Öffnen Sie ein anderes Fenster)
Klicken Sie auf die ungelesenen Nachrichten im Dropdown-Feld, zeigen Sie Details über ein Popup-Feld an, löschen Sie dann den Datensatz in der ungelesenen Liste, markieren Sie ihn in der Datenbank als gelesen und geben Sie die Anzahl der Nachrichten an Ungelesene Nachrichten im Nachrichtensymbol werden um eins reduziert
Benutzer aktualisieren
Nachricht löschen
Statistiken
Modul hinzufügen
Site-Nachrichtentyp hinzufügen
Site-weite Nachricht senden
4. Systemprozess
Holen Sie sich die Liste von Site-Nachrichten
Rufen Sie das Untermodul auf, um Site-Nachrichten einzufügen, die an die gesamte Site oder die Benutzergruppe, der ich angehöre, gesendet werden
Datenbankdaten basierend auf Abfragebedingungen zurückgeben
Anzahl ungelesener Site-Nachrichten abrufen
Rufen Sie das Untermodul auf, um Site-Nachrichten einzufügen, die an die gesamte Site oder die Benutzergruppe, der ich angehöre, gesendet werden
-
Nummer zurückgeben
Batch-Lesen
Überprüfen Sie, ob die Nachrichten-ID zum aktuellen Benutzer gehört
Lesen in der Tabelle „inbox_message“ auf 1 setzen, Update-Zeit ändern
Alles gelesen
update inbox_message set “read”=1, “update_time”=now where “receiver_name”=currentUser() and “read” = 0
Batch-Löschen
Überprüfen Sie, ob die Nachrichten-ID zum aktuellen Benutzer gehört
Gelöscht in der Tabelle „inbox_message“ auf 1 setzen, update_time ändern
Alles löschen
update inbox_message set “deleted”=1, “update_time”=now where “receiver_name”=currentUser() and “deleted” = 0
5. Datenbankdesign
In-Site-Nachrichteninhaltstabelle
CREATE TABLE `inbox_message_text` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `title` varchar(128) NOT NULL DEFAULT '', `content` longtext NOT NULL, `create_time` datetime NOT NULL, `update_time` datetime NOT NULL, `send_type` tinyint(4) NOT NULL DEFAULT '0', `creator_name` varchar(255) NOT NULL DEFAULT '', `deleted` tinyint(4) NOT NULL DEFAULT '0', `module_id` bigint(20) NOT NULL, `link` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Zusätzlich zur Nachrichtenquelle (Modulname) verfügt die On-Site-Nachricht selbst auch über eine Dimensionsbeschreibung namens Nachrichtentyp (Message_type), z. B. Sicherheitsnachrichten, Aktivitätsnachrichten, Servicemeldungen usw. Innerhalb jeder Hauptkategorie kann sie in Unterkategorien unterteilt werden, zum Beispiel Aktivitätsmeldungen – Werbeaktionen
Nachrichtenquellen und Nachrichtentypen können orthogonal sein, das heißt, die Arbeitsauftragsplattform kann auch Aktivitätsmeldungen enthalten; Die Nachrichtenquelle kann auch ein Nachrichtentyp sein, der als „Produktnachricht“ bezeichnet wird /Message
request Body Content-Type: Application/ jsonCREATE TABLE `inbox_message` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`message_text_id` bigint(20) NOT NULL,
`receiver_name` varchar(255) NOT NULL DEFAULT '',
`read` tinyint(4) NOT NULL DEFAULT '0',
`deleted` tinyint(4) NOT NULL DEFAULT '0',
`create_time` datetime NOT NULL,
`update_time` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `inbox_message_receiver_name_deleted_read_id` (`receiver_name`,`deleted`,`read`,`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Nach dem Login kopieren
responseCREATE TABLE `inbox_message` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `message_text_id` bigint(20) NOT NULL, `receiver_name` varchar(255) NOT NULL DEFAULT '', `read` tinyint(4) NOT NULL DEFAULT '0', `deleted` tinyint(4) NOT NULL DEFAULT '0', `create_time` datetime NOT NULL, `update_time` datetime NOT NULL, PRIMARY KEY (`id`), KEY `inbox_message_receiver_name_deleted_read_id` (`receiver_name`,`deleted`,`read`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `inbox_module` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`code` varchar(128) NOT NULL DEFAULT '',
`name` varchar(128) NOT NULL DEFAULT '',
`create_time` datetime NOT NULL,
`update_time` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `code` (`code`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Nach dem Login kopierenListe der Site-Nachrichten abrufen: GET /v1/message Benutzer-ID: xxx
CREATE TABLE `inbox_module` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code` varchar(128) NOT NULL DEFAULT '', `name` varchar(128) NOT NULL DEFAULT '', `create_time` datetime NOT NULL, `update_time` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
{
"title": "工单审批",
"content": "XXX提交了变更申请,请审批",
"to": "sunzhongyuan,shenli,wangya",
"module_name": "工单平台",
"link": "xxx"
}
Nach dem Login kopieren{
"code": 200,
"data": 32,
"msg": "OK"
}
Nach dem Login kopierenLesen, Stapellesen Site-Nachrichten: PUT /v1/read_messages/:messageIds
{ "title": "工单审批", "content": "XXX提交了变更申请,请审批", "to": "sunzhongyuan,shenli,wangya", "module_name": "工单平台", "link": "xxx" }
{ "code": 200, "data": 32, "msg": "OK" }
response
http://127.0.0.1:10085/v1/message?query=message_text_id.module_id.name:xxx&limit=1
.
Löschen E- und Batch-Löschen von Site-Nachrichten: PUT / v1/delete_messages/:messageIds
response Das Gleiche wie oben
Alle Site-Nachrichten löschen: PUT /v1/delete_all_messages
response Das Gleiche wie obenGet die Nachrichtenquellenliste: GET /v1/ Modul
Antwort
{ "code": 200, "data": { "data": [ { "id": 1, "message_text": { "id": 1, "title": "title 2", "content": "content 2", "create_time": "2018-01-12 11:13:48", "update_time": "2018-01-12 11:13:48", "send_type": 1, "creator_name": "sysadmin", "deleted": 0, "link": "xxx", "Messages": null, "module": { "id": 4, "code": "secure", "name": "xxx", "create_time": "2018-01-11 15:38:01", "update_time": "2018-01-11 15:38:01", "MessageTexts": null } }, "receiver_name": "xxx", "read": 0, "deleted": 0, "create_time": "2018-01-12 11:13:48", "update_time": "2018-01-12 11:13:48" } ], "total": 2 }, "msg": "OK" }
7. Hinweise zum Testen
1 Site-Nachricht senden
Reine Schnittstelle
Empfängerbenutzer werden durch Kommas getrennt, Authentizität nicht verifiziert
Empfängerbenutzer haben eine Längenüberprüfung, 50 BytesTitelinhalt Es gibt eine Längenüberprüfung, die 45 bzw. 150 Bytes beträgt
- Modulname ist eine Liste, Sie müssen hier eine auswählen
- 2 Andere Schnittstellen können sein Getestet über die Frontend-Seite
8. Optimierung
- Die ungelesene Liste kann in Fettschrift angezeigt werden, während die gelesene Liste in normalen Schriftarten angezeigt wird
- Kategorisiert die Nachrichten auf der Website und beschriftet sie mit unterschiedlichen Breiten, um das Filtern, Suchen und Blockieren zu erleichtern
Der Administrator kann die Site-weiten Nachrichten und das Site-Personal hinzufügen, löschen, ändern und überprüfen und Site-weite Nachrichtenattribute, wie z. B. das Abbrechen einer Site-Nachricht, damit niemand sie sehen kann
- Management-Mitglieder können die Anzahl der auf der Site gesendeten Nachrichten, die Nutzung jedes Produkts und den Anteil der gelesenen Nachrichten zählen , die Zeit, zu der die Nachrichten gelesen wurden, die Art und Weise, wie die Nachrichten gelesen wurden (zum Öffnen klicken oder Batch-Vorgang) usw 1 Klicken Sie auf das Symbol, um die neuesten N ungelesenen Nachrichten anzuzeigen.
- Dropdown-Feld anzeigen über die Höhenbeschränkung des Dropdown-Felds
- Wenn der ungelesene Messwert kleiner als N ist, kann sich das Dropdown-Feld an die Höhe anpassen
- Wenn keine ungelesenen Nachrichten vorhanden sind, wird „Keine neuen“ angezeigt Noch Nachrichten" ), Titel
- Nach unten schieben Sie das Dropdown-Feld, um mehr ungelesene Nachrichten anzuzeigen (erhalten Sie nur die ID, die kleiner als die Mindest-ID in der angezeigten Nachrichtenliste ist, d. h. Sie erhalten keine neuen Nachrichten, nachdem Sie auf das Symbol geklickt haben)
3 Klicken Sie auf eine Nachricht im Dropdown-Feld
Das Dropdown-Feld verschwindet nicht
Trotzdem stoppt die Schnittstelle zum Abrufen der Anzahl ungelesener Nachrichten alle 10 Sekunden- Die Zahl Anzahl der ungelesenen Nachrichten wird um 1 reduziert.
- Die Liste der ungelesenen Nachrichten löscht die aktuelle Nachricht (Slice). Uhrzeit), Titel, Inhalt der Nachricht Sie können weiterhin auf eine ungelesene Nachricht klicken.
- 6 Klicken Sie erneut auf das Dropdown-Feld und den Rand des Symbols Stellen Sie die Schnittstelle wieder her, um alle 10 Sekunden die Anzahl der ungelesenen Nachrichten abzurufen
- 7 Klicken Sie erneut auf das Symbol, um zum Status Nr. 1 zurückzukehren
Das Symbolverhalten von Alibaba Cloud ist:
Die Anzahl der ungelesenen Nachrichten wird beim Aktualisieren der Seite nur einmal abgefragt und dann nicht regelmäßig aktualisiert (natürlich kann es sein, dass die Aktualisierungszeit abgelaufen ist). Das Intervall ist relativ lang und wird nicht gefunden. Oder es wird ein Socket verwendet. Es wird ein langer Link hergestellt Auf der Nachrichtenverwaltungsseite der Website ist die Standardeinstellung „Ungelesene Nachrichten“
4 Klicken Sie auf die ungelesene Nachricht und öffnen Sie einen neuen Tab, um die Details der Nachricht anzuzeigen (Detailseite). Der ursprüngliche Tab-Inhalt bleibt unverändert , das heißt, es gibt keine ungelesene Nachricht minus eins und die gerade angeklickte Nachricht wird nicht aus dem Dropdown-Feld gelöscht
5 Es können bis zu 5 Nachrichten angezeigt werden, solange die Seite nicht aktualisiert wird Seien Sie immer diese 5 Nachrichten
6 Es gibt keine Funktion zum Scrollen mehr, nur mehr anzeigen, klicken Sie, um die Nachrichtenverwaltungsseite der Site aufzurufen, die Standardeinstellung ist „Ungelesene Nachrichten“
Der Unterschied zwischenund dem Klicken auf das Symbol ist: Klicken auf Das Symbol springt von der aktuellen Seite direkt zur Site-Nachrichtenverwaltungsseite und durch Klicken auf „Mehr anzeigen“ wird ein neuer Tab erstellt.
7 Es gibt eine zusätzliche Schaltfläche „Nachrichtenannahmeverwaltung“. Derzeit springt die Seite zur Site-Nachrichtenverwaltung Seite, aber die Standardeinstellung ist „Basic Reception Management“. Um die Aufmerksamkeit des Benutzers abzulenken, sollte der Fortschrittsbalken ausgeblendet werden.
- Andere Verhaltensweisen beim Aktualisieren der Seite sind davon nicht betroffen.
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Funktion für private Nachrichten auf der Site in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.
