Table des matières
Suppression par lots
Supprimez tout
5. Conception de base de données
Tableau de contenu des messages sur site
Maison développement back-end Problème PHP Comment implémenter la fonction de message privé dans le site en php

Comment implémenter la fonction de message privé dans le site en php

Sep 10, 2021 am 10:28 AM
php

Comment implémenter la fonction de message privé dans le site en PHP : 1. Lire le corps de la requête POST ; 2. Appeler le sous-module pour insérer le message du site envoyé à l'ensemble du site ou au groupe d'utilisateurs auquel il appartient ; ; 3. Obtenez le nombre de messages du site non lus ; 4. Vérifiez si le messageId appartient à l'utilisateur actuel. 5. Implémentez simplement la suppression par lots.

Comment implémenter la fonction de message privé dans le site en php

L'environnement d'exploitation de cet article : système windows7, version PHP7.1, ordinateur DELL G3

Comment php implémente-t-il la fonction de message privé sur le site ?

Mise en œuvre PHP d'idées et de solutions de conception de messages de site

1. Contexte

Actuellement, lorsque les utilisateurs de la plateforme d'exploitation et de maintenance communiquent, ils s'appuient davantage sur WeChat et les notifications par e-mail, tandis que la plateforme d'exploitation et de maintenance dans son ensemble Le produit a également besoin d'un service capable d'effectuer la communication interne - la messagerie intra-site.

Le ton de conception des messages sur site

Le ton de conception des messages sur site dépend de la façon dont les utilisateurs utilisent les messages sur site :

  • Les utilisateurs ne s'en tiendront pas à la page de l'opération et la plate-forme de maintenance, en attente des notifications de message et en affichant le contenu du message, puis accédez à la page que vous souhaitez utiliser.

  1. En d'autres termes, les messages sur site ne sont pas la première entrée, et la nature en temps réel des messages sur site n'a pas beaucoup d'importance.

  2. Contrairement à de nombreux sites de réseaux sociaux (Facebook, Zhihu, Weibo, etc.), les utilisateurs resteront sur la page principale du site de réseau social, actualisant constamment le nouveau contenu et vérifiant les nouveaux messages (principalement les messages privés personnels, les messages d'autres personnes). réponses, etc.) Il ne s'agit certainement pas de vérifier les messages de notification du système)

  • L'utilisateur décidera s'il doit accéder à la plateforme d'exploitation et de maintenance pour l'exploitation en fonction de la notification par e-mail

  • S'il y en a particulièrement beaucoup Dans les e-mails, par exemple, plusieurs bons de travail doivent être traités par l'utilisateur en même temps. Les utilisateurs effectueront également tous les travaux sur la page « Mes tâches » fournie par la plateforme de bons de travail.

  • Si l'e-mail est accidentellement supprimé et qu'il n'y a pas de lien email pour entrer directement dans le module à exploiter

  1. Ensuite, vous pouvez soit vous rendre sur la page désignée en demandant un lien/numéro de facture

  2. ou procédez directement dans le module Recherche correspondant

Les descriptions ci-dessus signifient que les utilisateurs n'utilisent fondamentalement pas de messages sur site, alors dans quelles circonstances utiliseront-ils des messages sur site ?

  • N'envoie pas d'e-mails, uniquement des notifications de message pour les messages sur le site, tels que des notifications à l'échelle du site, des opérations d'édition, des opérations de commentaires, etc.

  • Lorsqu'il n'y a pas d'enregistrement d'opération détaillé pour un module spécifique, vous peut vérifier l'heure d'apparition des messages sur le site

Actuellement, il n'y a que des notifications d'actualités sur les produits, et l'affichage des messages n'est pas classé et agrégé. À l'avenir, lors de l'ajout de notifications, de mentions, de likes à l'échelle du site. commentaires et autres types de messages sur le site, vous devez envisager de regrouper les messages par type.

2. Description des exigences

  1. Les messages sur site doivent généralement répondre à deux besoins :

  • Messages sur site d'utilisateurs à utilisateurs et messages sur site d'administrateurs à utilisateurs. : c'est-à-dire un envoi individuel

  • Messages sur site de l'administrateur à plusieurs utilisateurs, groupes d'utilisateurs et à l'ensemble du site : c'est-à-dire un envoi un-à-plusieurs

(Il existe également un -messages du site des utilisateurs sur les produits, tels que des commentaires et des questions sur un certain module, etc. )

Nos besoins actuels sont :

1 L'administrateur envoie des messages intra-site à plusieurs utilisateurs

Aucune vérification de l'authenticité des utilisateurs

Limiter la longueur du titre et la longueur du contenu (respectivement 45 octets), 150 octets, correspondant à 15 et 50 caractères chinois)

Limiter la longueur du pinyin du destinataire (maximum 50 octets)

[Apprentissage recommandé : "Vidéo PHP Tutoriel"]

2 Les utilisateurs peuvent afficher les messages de leur propre site

Filtrer par "Tous, Lus, Non lus"

Classés par source de message : plateforme d'ordres de travail, gestion des ressources, installation automatique, plateforme de vulnérabilités, plateforme de pannes. . .

3 Les utilisateurs peuvent supprimer les messages du site, les supprimer par lots

4 Les utilisateurs peuvent lire, lire par lots et marquer tous les messages du site comme lus

5 L'icône de message en haut de la page de la plateforme d'exploitation et de maintenance

  • affiche les messages non lus Le nombre de messages, s'il dépasse 99, il affichera 99+

  • Placez la souris dessus, et il y aura une liste déroulante montrant les 10 derniers messages non lus (affichant "heure" , "source", "titre")

  • liste déroulante Il y a deux boutons en bas : "Plus" pour charger plus de messages non lus ; "Afficher tout" pour accéder à la page de liste des messages du site (il est préférable pour ouvrir une autre fenêtre)

  • Cliquez sur les messages non lus dans la liste déroulante, affichez les détails dans une boîte contextuelle ; puis supprimez l'enregistrement dans la liste des messages non lus, marquez-le comme lu dans la base de données et le numéro des messages non lus dans l'icône de message est réduit d'un

6 Page Administrateur :

Mettre à jour l'utilisateur

Supprimer le message

Statistiques

Ajouter un module

Ajouter un type de message du site

Envoyer un message à l'échelle du site

"Quatre processus système"

Obtenez le liste des messages du site

  1. Appelez le sous-module pour insérer les messages du site envoyés à l'ensemble du site ou au groupe d'utilisateurs auquel j'appartiens

  2. Renvoyer les données de la base de données en fonction des conditions de requête

Obtenir le nombre de messages du site non lus

  1. Appelez le sous-module pour insérer les messages du site envoyés à l'ensemble du site ou au groupe d'utilisateurs auquel j'appartiens

  2. Renvoyer le numéro

Batch read

  1. Vérifier si le messageId appartient à l'utilisateur actuel

  2. Définir read sur 1 dans la table inbox_message, modifier update_time

Tous lus

update inbox_message set “read”=1, “update_time”=now where “receiver_name”=currentUser() and “read” = 0
Copier après la connexion

Suppression par lots

  1. Vérifiez si le messageId appartient à l'utilisateur actuel

  2. Définissez supprimé à 1 dans la table inbox_message, modifiez update_time

Supprimez tout

update inbox_message set “deleted”=1, “update_time”=now where “receiver_name”=currentUser() and “deleted” = 0
Copier après la connexion

5. Conception de base de données

Tableau de contenu des messages sur site

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;
Copier après la connexion

En plus de la source du message (module_name), le message sur site lui-même a également une description dimensionnelle appelée type de message (message_type), comme les messages de sécurité, les messages d'activité, messages de service, etc. Au sein de chaque grande catégorie, elle peut être divisée en sous-catégories, par exemple, messages d'activité - promotions

Les sources de messages et les types de messages peuvent être orthogonaux, c'est-à-dire que la plateforme de bons de travail peut également avoir des messages d'activité ; la source du message peut également être un type de message, appelé "message produit"

送 发 发

R
CREATE 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;
Copier après la connexion

Table source du message

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;
Copier après la connexion
E

6, conception de l'API

Envoyer une lettre à la station : Post/V1 /Message

request Body Content-Type : Application/ json

{
    "title": "工单审批",
    "content": "XXX提交了变更申请,请审批",
    "to": "sunzhongyuan,shenli,wangya",
    "module_name": "工单平台",
    "link": "xxx"
}
Copier après la connexion
response

{
    "code": 200,
    "data": 32,
    "msg": "OK"
}
Copier après la connexion

Obtenir la liste des messages sur site : GET /v1/message User-Id : xxx

http://127.0.0.1:10085/v1/message?query=message_text_id.module_id.name:xxx&limit=1
Copier après la connexion
{
    "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"
}
Copier après la connexion

read, Lecture par lots de messages sur site : PUT /v1/read_messages/:messageIds

response

{
    "code": 200,
    "data": "OK",
    "msg": "OK"
}
Copier après la connexion

All read PUT : /v1/read_all_messages

response Comme ci-dessus

Supprimer et supprimer le site par lots messages : PUT /v1/delete_messages/:messageIds

response Comme ci-dessus

Supprimer tous les messages du site : PUT /v1/delete_all_messages

response Comme ci-dessus

Obtenez la liste des sources des messages : GET /v1/module

response

{
    "code": 200,
    "data": [
        {
            "id": 1,
            "code": "worksheet",
            "name": "工单平台",
            "create_time": "2018-01-11 15:21:38",
            "update_time": "2018-01-11 15:21:38",
            "MessageTexts": null
        },
        {
            "id": 2,
            "code": "cmdb",
            "name": "资源管理",
            "create_time": "2018-01-11 15:22:28",
            "update_time": "2018-01-11 15:22:28",
            "MessageTexts": null
        },
        ...
    ],
    "msg": "OK"
}
Copier après la connexion

7. Notes sur les tests

1 Envoyer un message du site

    Interface pure
  • Les utilisateurs destinataires sont séparés par com mas, l'authenticité n'est pas vérifiée
  • Les utilisateurs destinataires ont une vérification de longueur, 50 octets
  • contenu du titre Il y a une vérification de longueur, qui est respectivement de 45 et 150 octets
  • module_name est une liste, vous devez en choisir une ici
  • 2 D'autres interfaces peuvent être testées via la page front-end

8. Optimisation

    La liste non lue peut être affichée en gras, tandis que la liste lue est dans des polices normales
  • Catégories les messages sur le site et les étiquete avec différentes latitudes pour faciliter le filtrage, la recherche et le blocage
  • Les utilisateurs peuvent configurer pour autoriser la réception de la source du message du site
  • L'administrateur peut ajouter, supprimer, modifier et vérifier l'ensemble du site messages, personnel du site et attributs de message à l'échelle du site, tels que l'annulation d'un message du site afin que personne ne puisse le voir
  • Les membres de la direction peuvent compter le nombre de messages envoyés sur le site, l'utilisation de chaque produit, la proportion des messages lus, l'heure à laquelle les messages ont été lus, la façon dont les messages ont été lus (clic pour ouvrir ou opération par lots), etc.

9. coin supérieur droit

1 Cliquez sur l'icône pour afficher les N derniers messages non lus

Afficher la liste déroulante

    Obtenez les N derniers messages non lus en temps réel
  • N peut être 5~10, la valeur spécifique dépend de la limite de hauteur de la liste déroulante
  • Lorsque la lecture non lue est inférieure à N, la liste déroulante peut s'adapter à la hauteur
  • S'il n'y a pas de messages non lus, elle le fera afficher "Aucun nouveau message pour l'instant" "
  • Arrêtez l'interface pour obtenir le nombre de messages non lus toutes les 10 secondes
  • 2 Dans la liste déroulante, la source du message, l'heure (par rapport à l'heure actuelle : il y a 10 minutes), titre

Bas Faites glisser la liste déroulante pour afficher plus de messages non lus (obtenez uniquement l'identifiant plus petit que l'identifiant minimum dans la liste des messages affichés, c'est-à-dire ne recevez pas de nouveaux messages après avoir cliqué sur le icône)

  • 3 Cliquez sur un message dans la liste déroulante

La liste déroulante ne disparaît pas

    Arrête toujours l'interface pour obtenir le nombre de messages non lus toutes les 10 secondes
  • Le nombre de messages non lus est réduit de 1
  • La liste des messages non lus supprime le message actuel (tranche)
  • Afficher la boîte contextuelle
  • 4 La boîte contextuelle affiche la source , heure (heure absolue), titre, contenu du message

  • 5 Fermez la boîte pop-up ou cliquez sur le pourtour :

La boîte pop-up disparaît

    Déroulez La boîte ne disparaît pas
  • Vous pouvez continuer à cliquer sur un message non lu
  • 6 Cliquez à nouveau sur la liste déroulante et sur le pourtour de l'icône

La liste déroulante disparaît

    Effacer les messages non lus existants liste de messages
  • Restaurez l'interface pour obtenir le nombre de messages non lus toutes les 10 secondes
  • 7 Cliquez à nouveau sur l'icône pour revenir à l'état n°1

Le comportement de l'icône d'Alibaba Cloud est :

  1. Le nombre de messages non lus ne sera demandé qu'une seule fois lors du rafraîchissement de la page, et ensuite il ne sera pas rafraîchi régulièrement (bien sûr, il se peut que le temps de rafraîchissement l'intervalle est relativement long et il n'est pas trouvé ; ou il peut être utilisé par socket, un lien long est établi)

  2. icône de survol, qui est une liste déroulante qui affiche les messages non lus

  3. Cliquez sur l'icône pour entrer la page de gestion des messages du site, la valeur par défaut est "messages non lus"

4 Cliquez sur le message non lu et ouvrez un nouvel onglet pour afficher les détails du message (page de détail). Le contenu de l'onglet d'origine reste inchangé. , c'est-à-dire qu'il n'y a pas de message non lu moins un, et le message sur lequel vous venez de cliquer n'est pas supprimé de la liste déroulante

5 Jusqu'à 5 messages peuvent être affichés Tant que la page n'est pas actualisée, elle le sera. soyez toujours ces 5 messages

6 Il n'y a pas de fonction de défilement supplémentaire, seulement afficher plus, cliquez pour accéder à la page de gestion des messages du site, la valeur par défaut est "messages non lus"

La différence entre
  • et cliquer sur l'icône est : cliquer sur le L'icône passera directement à la page de gestion des messages du site. Cliquer sur "Afficher plus" créera un nouvel onglet

7 Il y a un bouton supplémentaire "Gestion de l'acceptation des messages". Actuellement, la page passe à la page de gestion des messages du site, mais le la valeur par défaut est "Gestion de base de la réception"

Masquer la barre de progression du navigateur

L'interface permettant d'obtenir le nombre de messages non lus toutes les 10 secondes déclenchera l'affichage de la barre de progression par le navigateur, ce qui distrait l'attention de l'utilisateur, la barre de progression doit être masquée.

Les autres comportements d'actualisation de la page ne sont pas affectés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

See all articles