统计
  • 建站日期:2021-03-10
  • 文章总数:386 篇
  • 评论总数:414 条
  • 分类总数:9 个
  • 最后更新:10月20日
文章 未分类

thinkphp6实现登陆注册功能

创新博客
首页 未分类 正文


thinkphp6实现登陆注册功能
-创新博客-专注于资源分享的blog
-第1
张图片

以下是我使用ThinkPHP6实现登陆注册的示例代码:

1,创建用户模型文件 /app/model/User.php,并添加以下代码:

<?php

namespace appmodel;

use thinkModel;

class User extends Model
{
    protected $pk = 'id'; // 主键名,默认为'id'
    protected $table = 'user'; // 数据库表名,默认为当前模型类名的小写字符串,可以手动设置

    // 密码加密,判断密码是否正确时需要用到
    public function setPasswordAttr($value)
    {
        return password_hash($value, PASSWORD_DEFAULT);
    }

    // 判断输入的密码是否与加密后的密码匹配
    public function checkPassword($password)
    {
        return password_verify($password, $this->password);
    }
}

2,创建控制器文件 /app/controller/Auth.php,并添加以下代码:

<?php

namespace appcontroller;

use appmodelUser;
use thinkfacadeSession;
use thinkfacadeView;

class Auth
{
    // 注册页面
    public function register()
    {
        return View::fetch('register');
    }

    // 处理注册请求
    public function doRegister()
    {
        $data = [
            'username' => input('post.username'),
            'password' => input('post.password')
        ];

        $validate = validate([
            'username' => 'require|unique:user',
            'password' => 'require|min:6'
        ]);

        if (!$validate->check($data)) {
            return redirect('register')->with(['error' => $validate->getError()]);
        }

        $user = new User($data);
        $user->save();

        return redirect('login')->with(['success' => '注册成功,请登录']);
    }

    // 登录页面
    public function login()
    {
        return View::fetch('login');
    }

    // 处理登录请求
    public function doLogin()
    {
        $data = [
            'username' => input('post.username'),
            'password' => input('post.password')
        ];

        $validate = validate([
            'username' => 'require',
            'password' => 'require'
        ]);

        if (!$validate->check($data)) {
            return redirect('login')->with(['error' => $validate->getError()]);
        }

        $user = User::where('username', $data['username'])->find();

        if ($user && $user->checkPassword($data['password'])) {
            Session::set('user_id', $user->id);
            return redirect('/');
        }

        return redirect('login')->with(['error' => '用户名或密码错误']);
    }

    // 退出登录
    public function logout()
    {
        Session::delete('user_id');
        return redirect('/');
    }
}

3,创建视图文件 /app/view/register.html 和 /app/view/login.html,并添加以下代码:

<!-- /app/view/register.html -->
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>注册</title>
</head>
<body>
    <?php if (session('?error')): ?>
    <div style="color: red;"><?php echo session('error'); ?></div>
    <?php endif; ?>
    <form method="post" action="<?php echo url('doRegister'); ?>">
        <div>
            <label for="username">用户名:</label>
            <input type="text" name="username" id="username">
        </div>
        <div>
            <label for="password">密码:</label>
            <input type="password" name="password" id="password">
        </div>
        <button type="submit">注册</button>
    </form>
</body>
</html>

<!-- /app/view/login.html -->
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
    <?php if (session('?error')): ?>
    <div style="color: red;"><?php echo session('error'); ?></div>
    <?php endif; ?>
    <form method="post" action="<?php echo url('doLogin'); ?>">
        <div>
            <label for="username">用户名:</label>
            <input type="text" name="username" id="username">
        </div>
        <div>
            <label for="password">密码:</label>
            <input type="password" name="password" id="password">
        </div>
        <button type="submit">登录</button></form>
</body>
</html>
  1. 创建首页视图文件 /app/view/index.html,并添加以下代码:
```html
```html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
    <?php if (session('?user_id')): ?>
    <p>欢迎回来,<?php echo session('username'); ?></p>
    <a href="<?php echo url('logout'); ?>">退出登录</a>
    <?php else: ?>
    <p><a href="<?php echo url('login'); ?>">登录</a> 或 <a href="<?php echo url('register'); ?>">注册</a></p>
    <?php endif; ?>
</body>
</html>

差点忘记数据库,请在数据内执行一下SQL语句

CREATE TABLE `user` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(32) NOT NULL COMMENT '用户名',
  `password` varchar(255) NOT NULL COMMENT '密码',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

至此就完成了,有问题可以在网站导航定制开发这里找我,与我探讨欢迎加Q

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

这篇文章最后更新于2023-5-11,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
开源无加密资源下载站源码免费分享需要的直接拿走,美观大气多种颜色随意切换
« 上一篇
用php+Acme写一个SSL证书创建脚本
下一篇 »
为了防止灌水评论,登录后即可评论!

HI ! 请登录
注册会员,享受下载全站资源特权。

最新文章

热门文章