📅  最后修改于: 2023-12-03 15:06:57.637000             🧑  作者: Mango
CodeIgniter 4 是一个基于 MVC 模式开发的轻量级框架,其核心原则之一就是“简单而功能强大”。在 CodeIgniter 4 中,提供了一种轻松实现电子邮件或用户名登录的方法,本文将介绍如何在 CodeIgniter 4 中实现此功能。
<!-- 登录表单 -->
<form action="<?php echo site_url('login/index'); ?>" method="post">
<label for="email">邮箱 / 用户名</label>
<input type="text" name="email" id="email" required>
<label for="password">密码</label>
<input type="password" name="password" id="password" required>
<input type="submit" value="登录">
</form>
namespace App\Controllers;
use App\Models\UserModel;
use CodeIgniter\Controller;
class Login extends Controller
{
public function index()
{
// 获取用户输入数据
$email = $this->request->getPost('email');
$password = $this->request->getPost('password');
// 验证邮箱或用户名
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$where = ['email' => $email];
} else {
$where = ['username' => $email];
}
// 查询用户信息
$userModel = new UserModel();
$user = $userModel->where($where)->first();
// 判断用户密码是否正确
if ($user && password_verify($password, $user['password'])) {
// 登录成功,重定向到主页
return redirect()->to('/');
} else {
// 登录失败,显示错误信息
return view('login', ['error' => '用户名或密码错误!']);
}
}
}
namespace App\Models;
use CodeIgniter\Model;
class UserModel extends Model
{
protected $table = 'user'; // 用户表名
// 用户表字段
protected $allowedFields = ['id', 'username', 'email', 'password'];
public function getUserByEmail($email)
{
$query = $this->db->table($this->table)->getWhere(['email' => $email]);
return $query->getRow();
}
public function getUserByUsername($username)
{
$query = $this->db->table($this->table)->getWhere(['username' => $username]);
return $query->getRow();
}
}
使用电子邮件或用户名登录 Codeigniter 4 比较简单,主要依赖于 Codeigniter 4 自带的路由和查询数据库的方法,需要注意的是在登录成功后的跳转链接到达对应的控制器下再进行处理,如:跳转到主页控制器。