Step-1
从以下位置下载 Codeigniter 3.x官方网站
Step-2
解压到本地主机根目录中的文件夹中。 (xampp 中的 htdocs 和 wamp 中的 www)
步骤3。配置
打开您在 go 中解压 codeigniter 的文件夹
应用程序->配置->autoload.php。转到第 55 行并自动加载这两个库
$autoload['libraries'] = array('database', 'session');
转到第 67 行并加载两个助手
$autoload['helper'] = array('url', 'file');
保存文件,然后转到 application->config->config.php
将第 19 行的 Base URL 设置为
$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/folder_name/';
第 31 行从 value 中删除 index.php 并将其更改为
$config['index_page'] = '';
第 49 行将 uri_protocol 从 AUTO 设置为 REQUEST_URI
$config['uri_protocol'] = 'REQUEST_URI';
第 229 行设置加密密钥
$config['encryption_key'] = '!@#$%^&*()ASDFGHJKL:ZXCVBNM<>QWERTYUIOP';
// I recommend you create a hash and place it here
保存文件
步骤 4 .htaccess
在 codeigniter 安装文件夹的根目录下创建一个 .htaccess 文件,在其中写入以下内容并保存
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
步骤5。创建数据库
打开你的phpmyadmin或mysql终端创建一个数据库,在其中创建一个表users,你可以使用以下查询
CREATE TABLE `users` (
`id` int(11) NOT NULL,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`fullname` varchar(50) NOT NULL,
`status` enum('pending','approved') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
步骤-6。将数据库连接到 Codeigniter
转到应用程序->配置->database.php。假设它是全新安装并且您尚未创建任何环境。转到第 52 行并将四行更改为
$db['default']['username'] = 'username'; // will be root if you have xampp
$db['default']['password'] = 'password'; // will be empty if you haven't set
$db['default']['database'] = 'your_database_name';
$db['default']['dbdriver'] = 'mysqli'; // changed from mysql to mysqli
步骤7。风景
源代码
步骤8。控制器
class Login extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('Login_model');
$this->load->library('form_validation');
}
public function index()
{
if($this->isLoggedin()){ redirect(base_url().'login/dashboard');}
$data['title']='Login Boiler Plate';
if($_POST)
{
$config=array(
array(
'field' => 'username',
'label' => 'Username',
'rules' => 'trim|required'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'trim|required'
)
);
$this->form_validation->set_rules($config);
if ($this->form_validation->run() == false) {
// if validation has errors, save those errors in variable and send it to view
$data['errors'] = validation_errors();
$this->load->view('login',$data);
} else {
// if validation passes, check for user credentials from database
$user = $this->Login_model->checkUser($_POST);
if ($user) {
// if an record of user is returned from model, save it in session and send user to dashboard
$this->session->set_userdata($user);
redirect(base_url() . 'Login/dashboard');
} else {
// if nothing returns from model , show an error
$data['errors'] = 'Sorry! The credentials you have provided are not correct';
$this->load->view('login',$data);
}
}
}
else
{
$this->load->view('login',$data);
}
}
public function change_password()
{
if($this->isLoggedin()){
$data['title']='Change Password';
if($_POST)
{
$config=array(
array(
'field' => 'old_password',
'label' => 'Old Password',
'rules' => 'trim|required|callback_checkPassword'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'trim|required'
),
array(
'field' => 'conf_password',
'label' => 'Confirm Password',
'rules' => 'trim|required|matches[password]'
)
);
$this->form_validation->set_rules($config);
if ($this->form_validation->run() == false)
{
// if validation has errors, save those errors in variable and send it to view
$data['errors'] = validation_errors();
$this->load->view('change_password',$data);
}
else
{
// if validation passes, check for user credentials from database
$this->Login_model->updatePassword($_POST['password'],$this->session->userdata['id']);
$this->session->set_flashdata('log_success','Congratulations! Password Changed');
redirect(base_url() . 'Login/dashboard');
}
}
else
{
$this->load->view('change_password',$data);
}
}
else
{
redirect(base_url().'Login');
}
}
public function dashboard()
{
if($this->isLoggedin())
{
$data['title']='Welcome! You are logged in';
$this->load->view('success',$data);
}
else
{
redirect(base_url().'Login');
}
}
public function logout()
{
$this->session->sess_destroy();
redirect(base_url().'Login');
}
public function isLoggedin()
{
if(!empty($this->session->userdata['id']))
{
return true;
}
else
{
return false;
}
}
}
步骤8。该模型
class Login_model extends CI_Model{
function __construct(){
parent::__construct();
}
public function checkUser($data)
{
$st=$this->db->SELECT('*')->from('users')
->WHERE('username',$data['username'])
->WHERE('password',sha1(md5($data['password'])))
->get()->result_array();
if(count($st)>0)
{
return $st[0];
}
else
{
return false;
}
}
public function checkPassword($str)
{
$st=$this->db->SELECT('*')->from('users')
->WHERE('id',$this->session->userdata['id'])
->WHERE('password',sha1(md5($str)))
->get()->result_array();
if(count($st)>0)
{
return true;
}
else
{
return false;
}
}
public function updatePassword($password,$id)
{
$pass=array(
'password' => sha1(md5($password))
);
$this->db->WHERE('id',$id)->update('users',$pass);
}
}
步骤9。测试
在 Phpmyadmin 中打开数据库并使用以下查询将示例数据插入到您的表中
INSERT INTO `users` (`id`, `username`, `password`, `fullname`, `status`)
VALUES
(1, 'john', '56f5950b728849d0b97c1bccf1691c090ab6734c', 'John Vick',
'approved');
测试1
空提交
它将产生错误,我们将其存储在控制器中的错误索引中,将其传递给视图并在该值存在时将其显示在视图中。
测试-2。凭证错误
提供任何用户名和密码(随机)
测试-3。正确的凭证
用户名: 约翰
密码:约翰
成功查看源代码
ALERTS!!
这是入门者的基本代码,还有很多改进空间,例如Security特点和加密
完整的源代码
您可以从 Git 下载完整的源代码:Boiler-Plates-Codeigniter-3.x-登录