当前位置:   article > 正文

thinkphp5 实现会员登录和基本信息管理(附简单代码)_tp5用户启用禁用代码

tp5用户启用禁用代码

在 ThinkPHP 5 中实现会员登录和基本信息管理,你需要完成以下几个步骤:

1. 数据库设计

首先,你需要在数据库中创建一个用户表(例如 users),包含至少以下几个字段:

  • id:用户ID(主键,自增)
  • username:用户名
  • password:密码(建议加密存储,如使用 password_hash 函数)
  • email:邮箱(可选)
  • phone:手机号(可选)
  • status:用户状态(可选,例如:0-禁用,1-启用)
  • created_atupdated_at:记录创建和最后更新时间(可选)

2. 创建模型(Model)

在 ThinkPHP 中,模型通常对应数据库中的表。你可以使用命令行工具生成模型,或者手动在 application\index\model(或其他模块下)创建 User 模型文件。

3. 创建控制器(Controller)

你需要创建一个控制器来处理登录和基本信息管理的逻辑。在 application\index\controller(或其他模块下)创建 User 控制器文件。

4. 实现登录功能

4.1 登录表单

在视图层(如 application\index\view\user\login.html)创建一个登录表单,包含用户名和密码输入框以及提交按钮。

4.2 登录验证

User 控制器中创建一个 login 方法,用于处理登录请求。首先验证表单数据,然后使用模型查询数据库以验证用户名和密码是否正确。如果验证成功,使用 session 存储用户信息,并跳转到用户主页或其他页面。如果验证失败,显示错误信息并重新显示登录表单。

5. 实现基本信息管理

5.1 显示基本信息

User 控制器中创建一个 profile 方法,用于显示用户的基本信息。你可以从 session 中获取用户ID,并使用模型查询数据库以获取用户信息。然后将信息传递给视图层进行显示。

5.2 修改基本信息

在视图层创建一个基本信息修改表单,包含需要修改的字段(如姓名、邮箱、手机号等)以及提交按钮。在 User 控制器中创建一个 updateProfile 方法,用于处理基本信息修改请求。首先验证表单数据,然后使用模型更新数据库中的用户信息。如果更新成功,显示成功信息并重新显示用户基本信息。如果更新失败,显示错误信息并重新显示修改表单。

6. 安全性考虑

  • 密码加密:在存储密码时,使用哈希函数(如 password_hash)对密码进行加密处理。在验证密码时,使用 password_verify 函数进行验证。
  • 防止SQL注入:使用ThinkPHP的ORM(对象关系映射)功能或查询构建器来执行数据库操作,而不是直接编写SQL语句。这可以帮助防止SQL注入攻击。
  • 验证码:在登录表单中添加验证码字段,以防止恶意登录尝试。
  • HTTPS:如果可能的话,使用HTTPS来加密网站和用户的通信,以保护用户数据免受中间人攻击。
  • 输入验证:对所有用户输入进行验证和过滤,以防止潜在的安全漏洞。使用ThinkPHP的验证类或其他验证库来执行输入验证。

为你提供一个简化版的代码实例,展示如何在 ThinkPHP 5 中实现会员登录和基本信息管理。请注意,以下代码仅作为示例,你可能需要根据你的具体需求进行调整。

1. 数据库设计

假设你已经创建了一个名为 users 的表,并包含了 id, username, password, email 等字段。

2. 创建模型(Model)

application\index\model 目录下创建 User.php 文件:

// application\index\model\User.php
namespace app\index\model;

use think\Model;

class User extends Model
{
    // 设置表名(可选,如果模型名与表名相同则不需要设置)
    protected $table = 'users';

    // 自动写入时间戳
    protected $autoWriteTimestamp = true;

    // 隐藏密码字段
    protected $hidden = ['password'];
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3. 创建控制器(Controller)

application\index\controller 目录下创建 User.php 文件:

// application\index\controller\User.php
namespace app\index\controller;

use think\Controller;
use think\Request;
use app\index\model\User as UserModel;

class User extends Controller
{
    // 登录
    public function login(Request $request)
    {
        if ($request->isPost()) {
            $data = $request->post();
            $user = UserModel::where('username', $data['username'])->find();
            if ($user && password_verify($data['password'], $user->password)) {
                // 密码验证成功,登录
                session('user_id', $user->id);
                $this->success('登录成功', 'index/index');
            } else {
                // 密码验证失败
                $this->error('用户名或密码错误');
            }
        }
        return $this->fetch(); // 显示登录表单
    }

    // 注销
    public function logout()
    {
        session(null); // 清空session
        $this->success('注销成功', 'index/login');
    }

    // 个人信息
    public function profile()
    {
        if (!session('?user_id')) {
            $this->error('请先登录', 'index/login');
        }
        $userId = session('user_id');
        $user = UserModel::get($userId);
        $this->assign('user', $user);
        return $this->fetch(); // 显示个人信息页面
    }

    // 更新个人信息(这里仅作为示例,仅更新邮箱)
    public function updateProfile(Request $request)
    {
        if (!session('?user_id')) {
            $this->error('请先登录', 'index/login');
        }
        $userId = session('user_id');
        $data = $request->post();
        $result = UserModel::where('id', $userId)->update(['email' => $data['email']]);
        if ($result) {
            $this->success('更新成功');
        } else {
            $this->error('更新失败');
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

4. 视图层(View)

application\index\view\user 目录下创建登录表单(login.html)和个人信息页面(profile.html)。

login.html

<!-- application\index\view\user\login.html -->
<form action="{:url('index/user/login')}" method="post">
    <input type="text" name="username" placeholder="用户名">
    <input type="password" name="password" placeholder="密码">
    <button type="submit">登录</button>
</form>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

profile.html

<!-- application\index\view\user\profile.html -->
<h1>个人信息</h1>
<p>用户名:{$user.username}</p>
<p>邮箱:{$user.email}</p>
<!-- 其他字段... -->

<form action="{:url('index/user/updateProfile')}" method="post">
    <input type="email" name="email" value="{$user.email}" placeholder="邮箱">
    <button type="submit">更新</button>
</form>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

以上代码仅作为示例,你需要自行去实践完善,程序员加油吧

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/622553
推荐阅读
相关标签
  

闽ICP备14008679号