Avec le développement des réseaux sociaux, la fonction de message privé est devenue une fonctionnalité incontournable des réseaux sociaux modernes. Dans ThinkPHP, il n'est pas difficile d'implémenter la fonction de message privé. Cet article présentera comment utiliser le framework ThinkPHP pour implémenter la fonction de message privé.
1. Conception de la base de données
Afin d'implémenter la fonction de message privé, vous devez d'abord concevoir la base de données. Nous pouvons créer deux tables, la table des utilisateurs et la table des messages.
La table des utilisateurs contient l'identifiant de l'utilisateur, le nom d'utilisateur, le mot de passe et d'autres informations :
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
La table des messages contient l'identifiant du message privé, l'identifiant de l'expéditeur et du destinataire, le contenu du message privé, l'heure d'envoi et autres informations :
CREATE TABLE `messages` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sender_id` int(11) DEFAULT NULL, `receiver_id` int(11) DEFAULT NULL, `content` text, `created_at` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. Contrôleur
Maintenant, nous pouvons commencer à implémenter la fonction de message privé. Tout d’abord, créez un contrôleur de messages pour gérer les opérations liées aux messages privés. Nous pouvons générer un contrôleur Messages avec la commande suivante :
php think make:controller Messages
Dans le contrôleur Messages, nous pouvons créer deux méthodes : index et send.
La méthode index est utilisée pour afficher la liste des messages privés de l'utilisateur. Le code est le suivant :
public function index() { $user = session('user'); $messages = Message::where('sender_id','=',$user->id) ->orWhere('receiver_id','=',$user->id) ->orderBy('created_at', 'desc') ->paginate(10); return view('messages.index', ['messages' => $messages]); }
Dans cette méthode, nous obtenons d'abord les informations de l'utilisateur actuellement connecté. Ensuite, interrogez tous les messages privés de la table des messages dont l'expéditeur ou le destinataire est l'utilisateur actuel, et affichez-les dans l'ordre chronologique inverse et par pagination.
la méthode send est utilisée pour envoyer des messages privés. Le code est le suivant :
public function send(Request $request) { $content = $request->input('content'); $receiverId = $request->input('receiver_id'); $message = new Message(); $message->sender_id = session('user')->id; $message->receiver_id = $receiverId; $message->content = $content; $message->created_at = Carbon::now(); $result = $message->save(); return redirect('/messages'); }
Dans cette méthode, nous obtenons d'abord le contenu du message privé saisi par l'utilisateur et l'identifiant du destinataire. Ensuite, créez une nouvelle instance de message, définissez l'identifiant de l'expéditeur, l'identifiant du destinataire, le contenu et l'heure d'envoi, puis enregistrez le message privé dans la base de données.
3. Vues
Enfin, nous devons créer deux vues : messages.index et messages.send.
La vue messages.index est utilisée pour afficher tous les messages privés de l'utilisateur actuel. Le code est le suivant :
@foreach($messages as $message) <div class="message"> <p>发送者:{{$message->sender->username}}</p> <p>接收者:{{$message->receiver->username}}</p> <p>{{$message->content}}</p> <p>时间:{{$message->created_at}}</p> </div> @endforeach {{$messages->links()}}
Dans cette vue, nous utilisons une instruction de boucle pour parcourir tous les messages privés et. afficher les informations de l’expéditeur et du destinataire telles que l’auteur, le contenu et l’heure. À la fin, utilisez la fonction de pagination $messages->links() pour afficher les liens de pagination. La vue
la vue messages.send permet d'afficher le formulaire d'envoi de messages privés. Le code est le suivant :
<form action="{{url('/messages/send')}}" method="post"> @csrf <div class="form-group"> <label for="receiver_id">收件人:</label> <select name="receiver_id" id="receiver_id" class="form-control"> @foreach($users as $user) <option value="{{$user->id}}">{{$user->username}}</option> @endforeach </select> </div> <div class="form-group"> <label for="content">私信内容:</label> <textarea name="content" id="content" rows="5" class="form-control"></textarea> </div> <div class="form-group"> <button type="submit" class="btn btn-primary">发送</button> </div> </form>
Dans cette vue, nous utilisons une liste déroulante pour sélectionner le destinataire et créez une zone de texte pour saisir le contenu du message privé.
4. Résumé
Grâce aux étapes ci-dessus, nous pouvons implémenter la fonction de message privé dans le framework ThinkPHP. Lors de l'opération, il convient de prêter attention aux problèmes de sécurité des données, par exemple si l'utilisateur est connecté, s'il a le droit d'accès, etc. Grâce à une bonne conception et une mise en œuvre sécurisée, la fonction de messagerie privée peut mieux améliorer l'expérience utilisateur des réseaux sociaux.
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!