Thinkphp5实现会员注册登录功能

ThinkPHP5中实现注册和登录功能,可以按照以下步骤进行:

1. 创建数据库表

首先,需要在数据库中创建用户表,例如user,包含字段:id, username, password, email等。

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

2. 创建模型

application/common/model目录下创建User.php文件,定义用户模型。

<?php
namespace app\common\model;

use think\Model;

class User extends Model
{
    protected $table = 'user';
}

3. 创建控制器

application/index/controller目录下创建Index.php文件,定义注册和登录方法。

<?php
namespace app\index\controller;

use think\Controller;
use app\common\model\User;
use think\Request;

class Index extends Controller
{
    public function register()
    {
        if (request()->isPost()) {
            $data = input('post.');
            $validate = validate('User'); // 假设有User验证器
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }
            $user = new User();
            $user->username = $data['username'];
            $user->password = md5($data['password']); // 简单加密,实际应用中应使用更安全的加密方式
            $user->email = $data['email'];
            if ($user->save()) {
                $this->success('注册成功', 'login');
            } else {
                $this->error('注册失败');
            }
        } else {
            return $this->fetch();
        }
    }

    public function login()
    {
        if (request()->isPost()) {
            $data = input('post.');
            $validate = validate('User'); // 假设有User验证器
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }
            $user = User::get(['username' => $data['username']]);
            if ($user && $user->password == md5($data['password'])) { // 简单加密,实际应用中应使用更安全的加密方式
                session('user_id', $user->id);
                $this->success('登录成功', 'index/index');
            } else {
                $this->error('用户名或密码错误');
            }
        } else {
            return $this->fetch();
        }
    }

    public function logout()
    {
        session(null);
        $this->success('退出成功', 'login');
    }
}

4. 创建视图

application/index/view/index目录下创建register.htmllogin.html文件,分别用于注册和登录页面。

register.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
</head>
<body>
    <h1>注册</h1>
    <form action="{:url('register')}" method="post">
        <label for="username">用户名:</label>
        <input type="text" name="username" id="username" required><br>
        <label for="password">密码:</label>
        <input type="password" name="password" id="password" required><br>
        <label for="email">邮箱:</label>
        <input type="email" name="email" id="email"><br>
        <button type="submit">注册</button>
    </form>
</body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
    <h1>登录</h1>
    <form action="{:url('login')}" method="post">
        <label for="username">用户名:</label>
        <input type="text" name="username" id="username" required><br>
        <label for="password">密码:</label>
        <input type="password" name="password" id="password" required><br>
        <button type="submit">登录</button>
    </form>
    <a href="{:url(" register')}">注册</a>
</body>
</html>

5. 配置路由

application/route.php文件中配置路由。

<?php
use think\Route;

Route::get('register', 'index/Index/register');
Route::post('register', 'index/Index/register');
Route::get('login', 'index/Index/login');
Route::post('login', 'index/Index/login');
Route::get('logout', 'index/Index/logout');

6. 创建验证器(可选)

application/common/validate目录下创建User.php文件,定义用户验证器。

<?php
namespace app\common\validate;

use think\Validate;

class User extends Validate
{
    protected $rule = [
        'username' => 'require|unique:user',
        'password' => 'require|min:6',
        'email' => 'email|unique:user',
    ];

    protected $message = [
        'username.require' => '用户名必须',
        'username.unique' => '用户名已存在',
        'password.require' => '密码必须',
        'password.min' => '密码至少6位',
        'email.email' => '邮箱格式错误',
        'email.unique' => '邮箱已存在',
    ];
}

7. 运行项目

启动ThinkPHP5项目,访问注册和登录页面,即可实现注册和登录功能。

php think run

访问http://127.0.0.1:8000/registerhttp://127.0.0.1:8000/login即可看到注册和登录页面。

以上步骤涵盖了从数据库设计到前端视图、后端控制器以及验证器的完整流程,确保了注册和登录功能的安全性和完整性。

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我