引言
CodeIgniter(CI)是一个流行的PHP框架,它简化了Web应用程序的开发过程。本文将详细解析如何使用CI框架实现用户登录和注册功能,帮助开发者轻松构建用户管理系统。
准备工作
在开始之前,请确保您已经安装了CodeIgniter框架。以下步骤将指导您完成安装:
- 下载CodeIgniter框架。
- 解压文件到您的Web服务器根目录。
- 修改
application/config/database.php文件,配置数据库连接信息。
创建数据库和表
首先,您需要在数据库中创建一个名为users的表,用于存储用户信息。以下是一个简单的SQL脚本:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(100) NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
创建用户模型
在application/models目录下创建一个名为User_model.php的文件,并添加以下代码:
<?php
class User_model extends CI_Model {
public function __construct() {
parent::__construct();
$this->load->database();
}
public function register($username, $password, $email) {
$data = array(
'username' => $username,
'password' => $this->hash_password($password),
'email' => $email,
'created_at' => date('Y-m-d H:i:s')
);
return $this->db->insert('users', $data);
}
public function login($username, $password) {
$this->db->where('username', $username);
$user = $this->db->get('users')->row();
if ($user && $this->verify_password($password, $user->password)) {
return $user;
}
return false;
}
private function hash_password($password) {
return password_hash($password, PASSWORD_DEFAULT);
}
private function verify_password($password, $hashed_password) {
return password_verify($password, $hashed_password);
}
}
创建控制器
在application/controllers目录下创建一个名为Users.php的文件,并添加以下代码:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Users extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('User_model');
}
public function register() {
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required|min_length[3]|max_length[50]');
$this->form_validation->set_rules('password', 'Password', 'required|min_length[6]');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
if ($this->form_validation->run() == FALSE) {
$this->load->view('register');
} else {
$username = $this->input->post('username');
$password = $this->input->post('password');
$email = $this->input->post('email');
if ($this->User_model->register($username, $password, $email)) {
redirect('users/login');
} else {
$this->session->set_flashdata('message', 'Registration failed.');
redirect('users/register');
}
}
}
public function login() {
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required|min_length[3]|max_length[50]');
$this->form_validation->set_rules('password', 'Password', 'required|min_length[6]');
if ($this->form_validation->run() == FALSE) {
$this->load->view('login');
} else {
$username = $this->input->post('username');
$password = $this->input->post('password');
$user = $this->User_model->login($username, $password);
if ($user) {
$this->session->set_userdata('user', $user);
redirect('home');
} else {
$this->session->set_flashdata('message', 'Invalid credentials.');
redirect('users/login');
}
}
}
public function logout() {
$this->session->unset_userdata('user');
redirect('users/login');
}
}
创建视图
在application/views目录下创建register.php和login.php文件,并添加以下代码:
register.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Register</title>
</head>
<body>
<h1>Register</h1>
<?php echo validation_errors(); ?>
<?php echo form_open('users/register'); ?>
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<br>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<br>
<button type="submit">Register</button>
<?php echo form_close(); ?>
</body>
</html>
login.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<?php echo validation_errors(); ?>
<?php echo form_open('users/login'); ?>
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<br>
<button type="submit">Login</button>
<?php echo form_close(); ?>
</body>
</html>
配置路由
在application/config/routes.php文件中添加以下路由:
$route['users/register'] = 'users/register';
$route['users/login'] = 'users/login';
$route['users/logout'] = 'users/logout';
总结
通过以上步骤,您已经成功实现了使用CodeIgniter框架的用户登录和注册功能。您可以进一步扩展该系统,添加更多功能,如密码重置、用户角色管理等。希望本文能帮助您快速掌握CI框架,轻松实现用户管理功能。
