以下是我使用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>
- 创建首页视图文件
/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)》许可协议授权。版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!