Maison >cadre php >PensezPHP >Comment modifier l'avatar de l'utilisateur dans le framework ThinkPHP

Comment modifier l'avatar de l'utilisateur dans le framework ThinkPHP

PHPz
PHPzoriginal
2023-04-10 09:03:53831parcourir

ThinkPHP est un framework PHP très populaire sur le marché national. De nombreux développeurs et entreprises l'utilisent pour développer diverses applications Web. Parmi elles, l'avatar de l'utilisateur est l'une des fonctions les plus courantes dans les applications Web. Par conséquent, cet article présentera comment implémenter la fonction de modification de l'avatar de l'utilisateur dans le framework ThinkPHP.

1. Analyse des exigences

Avant de commencer à écrire du code, nous devons d'abord clarifier les exigences, notamment :

1. Les utilisateurs peuvent télécharger des avatars lors de l'inscription et enregistrer les avatars sur le serveur local.

2. après vous être connecté à votre propre avatar et enregistrez l'avatar modifié sur le serveur local.

En réponse aux besoins ci-dessus, ce qui suit sera expliqué en détail en deux parties.

2. Télécharger l'avatar

1. Créer une table de base de données

Pour plus de commodité, nous pouvons créer une table utilisateur pour stocker les informations de l'utilisateur :

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `avatar` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

Parmi elles, le champ avatar est utilisé pour stocker. le chemin de l'avatar de l'utilisateur.

2. Créer un modèle utilisateur

Dans le framework ThinkPHP, nous pouvons faire fonctionner la base de données via la classe Model. Par conséquent, nous devons d'abord créer un modèle utilisateur :

<?php
namespace app\index\model;

use think\Model;

class User extends Model
{
    protected $table = &#39;user&#39;;
}

Il convient de noter que nous devons spécifier le nom de la table comme « utilisateur », sinon ThinkPHP convertira automatiquement le nom de la classe de modèle en nom de la table de données.

3. Créer un contrôleur utilisateur

Ensuite, nous pouvons créer un UserController pour gérer les fonctions d'enregistrement des utilisateurs et de téléchargement d'avatar :

<?php
namespace app\index\controller;

use app\index\model\User;
use think\Controller;
use think\facade\Request;

class UserController extends Controller
{
    // 用户注册
    public function register()
    {
        if (Request::isPost()) {
            // 处理表单提交
            $user = new User;
            $user->username = Request::param('username');
            $user->password = md5(Request::param('password'));
            
            // 上传头像
            $avatar = Request::file('avatar');
            if ($avatar) {
                $savePath = '/uploads/';
                $saveName = md5($avatar->getOriginalName()) . '.' . $avatar->getExtension();
                $avatar->move('.' . $savePath, $saveName);
                $user->avatar = $savePath . $saveName;
            }
            
            $user->save();
            $this->redirect('/index/Index/index');
        }

        return $this->fetch('user/register');
    }

    // 修改头像
    public function changeAvatar()
    {
        if (Request::isPost()) {
            // 处理表单提交
            $user = User::get(session('user.id'));

            // 删除原头像
            if ($user->avatar) {
                unlink('.' . $user->avatar);
            }

            // 上传新头像
            $avatar = Request::file('avatar');
            if ($avatar) {
                $savePath = '/uploads/';
                $saveName = md5($avatar->getOriginalName()) . '.' . $avatar->getExtension();
                $avatar->move('.' . $savePath, $saveName);
                $user->avatar = $savePath . $saveName;
                $user->save();
            }

            return $this->success('修改头像成功!', '/index/Index/index');
        }

        return $this->fetch('user/change_avatar');
    }
}

Le code ci-dessus implémente les fonctions d'enregistrement des utilisateurs et de téléchargement d'avatar. En raison du manque de place, cet article ne l'expliquera pas en détail. Il est à noter que le chemin de sauvegarde des avatars des utilisateurs se trouve dans le répertoire /public/uploads/.

3. Modifier l'avatar

1. Modifier le modèle utilisateur

Dans l'étape précédente, nous avons implémenté la fonction de téléchargement de l'avatar. Cependant, lorsque l'utilisateur souhaite modifier l'avatar, nous devons d'abord supprimer l'avatar d'origine, puis télécharger le nouvel avatar sur le serveur. Par conséquent, nous devons ajouter une méthode deleteAvatar() au modèle User pour supprimer l'avatar de l'utilisateur :

public function deleteAvatar()
{
    if ($this->avatar) {
        unlink('.' . $this->avatar);
        $this->avatar = null;
        $this->save();
    }
}

2. Modifier le contrôleur utilisateur

Ensuite, nous pouvons modifier la méthode changeAvatar() dans le UserController pour prendre en charge les avatars Supprimer et fonctions de téléchargement :

public function changeAvatar()
{
    if (Request::isPost()) {
        // 处理表单提交
        $user = User::get(session('user.id'));

        // 删除原头像
        $user->deleteAvatar();

        // 上传新头像
        $avatar = Request::file('avatar');
        if ($avatar) {
            $savePath = '/uploads/';
            $saveName = md5($avatar->getOriginalName()) . '.' . $avatar->getExtension();
            $avatar->move('.' . $savePath, $saveName);
            $user->avatar = $savePath . $saveName;
            $user->save();
        }

        return $this->success('修改头像成功!', '/index/Index/index');
    }

    return $this->fetch('user/change_avatar');
}

Le code ci-dessus implémente les fonctions de suppression et de téléchargement des avatars des utilisateurs. Il convient de noter que l'avatar d'origine doit être supprimé avant de télécharger un nouvel avatar.

4. Résumé

Grâce aux étapes ci-dessus, nous avons implémenté avec succès les fonctions de téléchargement et de modification d'avatar utilisateur dans le framework ThinkPHP. En utilisant ces connaissances de base, nous pouvons optimiser davantage le code et ajouter des fonctions puissantes telles que le recadrage d'avatar et la conversion de format d'image pour fournir aux utilisateurs des services plus complets.

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