我一直在阅读来自不同新手的关于在codeigniter中登录和验证的几个问题,有些问题混合了JavaScript和J-query。 Codeigniter本身提供了强大的表单验证以及自定义错误设置支持。我已经决定与您分享使用我创建的登录样板文件在codeigniter中启动kickstart的最简单方法,我将与您分享。它有
控制器 登录
模型:Login_model
观看次数:登录并成功
基本配置
答案 0 :(得分:1)
<强>步骤1 强>
下载Codeigniter 3.x.<强>步骤-2 强>
在localhost根目录下的文件夹中解压缩。 (xampp中的htdocs和wamp中的www)
<强>步骤3。构造强>
打开已解压缩codeigniter的文件夹 应用程序 - &GT; config-&GT; autoload.php。转到第55行并自动加载这两个库
$autoload['libraries'] = array('database', 'session');
转到第67行并加载两个助手
$autoload['helper'] = array('url', 'file');
保存文件,然后转到应用程序 - &gt; config-&gt; config.php
将第19行的基本网址设为
$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/folder_name/';
在第31行从值中删除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终端创建数据库,在其中创建表用户,可以使用以下查询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
转到application-&gt; config-&gt; 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 空提交
它将产生错误,我们将其存储在Controller中的错误索引中,如果值存在,则将其传递给视图并在视图中显示它。
测试-2。错误的凭证
测试-3。正确的凭证
用户名:john 密码:约翰
<强>警报!! 强>
这是启动者的基本代码,还有更多的改进空间,例如Security功能和Encryption
完整源代码
从Git下载完整的源代码