CodeIgniter框架开发一个网站的后台1-27
https://v.youku.com/v_show/id_XMTM2MzU3MjcyMA==.html
02-将模板加入网站,设计login.php
以下中用到函数:base_url()
<link rel="stylesheet" href="<? echo base_url('public/admin/css/login.css'); ?>">
打开此函数方法:
打开文件:/application/config/autoload.php
找到设置:$autoload['helper'] = array('');
在值上加上url
03-后台use表创建
04-拓展控制器(扩展CI_Controller)
在/application/core/创建文件:My_Controllers.php
创建扩展类MY_Controller:
class MY_Controller extends CI_Controller {
public function __construct(){
parent :: __construct();
// 定义常量
define('PUB','public');
define('MODULE','admin');
define('C',$this->uri->segment(2,'main')); // class
define('M',$this->uri->segment(3,'index')); // mothed
}
}
然后可以在控制器和视图中使用扩展类中定义的常量:
$this->load->view(MODULE .'/user/login'); ////$this->load->view('admin/user/login');
<link rel="stylesheet" href="<? echo base_url(PUB.'/'.MODULE.'/css/login.css'); ?>">
<form action="<? echo site_url(MODULE.'/'.C.'/'.M); ?>" method="post">
实际代码-->
<link rel="stylesheet" href="http://xxx/ci-admin/public/admin/css/login.css">
<form action="http://xxx/ci-admin/index.php/admin/login/index" method="post">
【版權聲明】CodeIgniter框架开发一个网站的后台5
地址:https://v.youku.com/v_show/id_XMTM2NDUwNzQ5Ng==.html
...
主要内容:
--调试验证码
--编写格式化p函数:/helpers/function_helper.php,
function p($data=null) {
if (empty($data)) {
return false;
}
echo '<pre>';
print_r($data);
echo '</pre>';
}
【要开启帮助函数:/config/autoload.php 中设置:$autoload['helper'] = array('url','function');
--验证提交数据,包括验证码
【开启Session: session_start();
--刷新验证码(JS+aJax)
/views/admin/user/login.php
<script type="text/javascript">
$(function() {
$('img#verify').click(function(){ /* img#verify 是下面图片的标签名和ID*/
$.ajax({
url: '<?php echo site_url(MODULE .'/'. C .'/captcha') ?>?i='+Math.random(),
success: function(data){
/*alert(data); 调试,查看图片地址*/
$('img#verify').attr('src',data);
return;
}
});
})
})
</script>
/controllers/admin/login.php 中增加公共方法
public function captcha() { // /view/admin/user/login.php中ajax中用到的方法
if (empty($this->input->get('i',NUlL))) { //判断是否有提交过来
exit(); //如果是假,不允许输出字符,直接退出
}
echo $this->_captcha();
}
实现成功!
06-后台登录,验证用户名和密码
https://v.youku.com/v_show/id_XMTM2NDYzMzAyMA==.html
...
前台js验证
<script type="text/javascript">
$(function() {
/* 验证输入不能为空*/
$('#login_form form').submit(function(){
if ($('input[name="username"]').val() == '') {
$('input[name="username"]').focus();
return false;
}
if ($('input[name="password"]').val() == '') {
$('input[name="password"]').focus();
return false;
}
if ($('input[name="verify"]').val() == '') {
$('input[name="verify"]').focus();
return false;
}
});
$('img#verify').click(function(){ /* img#verify 是下面图片的标签名和ID*/
$.ajax({
url: '<?php echo site_url(MODULE .'/'. C .'/captcha') ?>?i='+Math.random(),
success: function(data){
/*alert(data); 调试,查看图片地址*/
$('img#verify').attr('src',data);
return;
}
});
})
})
</script>
...
数据库建表和数据
create table user (id tinyint(1),username varchar(20),password char(32),status tinyint(1));
insert into user (id,username,password,status) values (1,'admin','123','1');
...
新建user_model模型
1,模型类在models目录下创建。
2,模型类必须继承CI_Model。
新建User_model.php
<?
defined('BASEPATH') || exit('No direct script access allowed');
class User_model extends CI_Model {
// 把用户名密码传递到这里
private $t ='user'; //声明一个私有变量,表名
public function login($where = array()){
if (empty($where)) {
return array();
}
//return $this->db->get_where('ci_user'),$where)->row_array();
return $this->db->get_where($this-t,$where)->row_array();
}
}
控制器login.php方法
public function index() {
$data = array();
if (! empty($_POST)) {
$username = $this->input->post('username',NULL);
$password = $this->input->post('password',NULL);
$verify = $this->input->post('verify',NULL);
if (empty($username)||empty($password)||empty($password)) {
echo "<script>alert('用户名,密码,验证码都不能为空');history.back();</script>";
exit();
}
if ($verify != $_SESSION['verify_code']) {
echo "<script>alert('验证码不正确!');history.back();</script>";
exit();
}
//验证码正确后,就要释放Session中的验证码,清空sessiion中的验证码。
unset($_SESSION['verify_code']);
$_SESSION['verify_code'] = NULL;
//p($_POST);
//加载模块
$this->load->model(MODULE.'/User_model');
$where = array(
'username' => $username,
'password' => $this->_password($password)
);
// 用变量接收返回值
$user = $this->User_model->login($where);
if (empty($user)) { // 如果返回空记录
echo "<script>alert('用户名或密码错误!');history.back();</script>";
exit();
}
if (empty($user['status'])){
echo "<script>alert('你已经被禁用,请联系管理员!');history.back();</script>";
exit();
}
redirect(MODULE .'/main/index');
exit();
}
$data['captcha'] = $this->_captcha();
//exit($captcha);
$this->load->view(MODULE .'/user/login',$data); // $this->load->view('admin/user/login');
//var_dump($data);
}
My_Controller.php
<?php
defined('BASEPATH') || exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
public function __construct(){
parent :: __construct();
session_start();
// 定义常量
define('PUB','public');
define('MODULE','admin');
define('C',$this->uri->segment(2,'main')); // class
define('M',$this->uri->segment(3,'index')); // mothed
}
// 密码加密
protected function _password($pass) {
return md5(md5($pass) . 'ci'); // 两次加密并加随意字符串
}
protected function _captcha() {
$this->load->helper('captcha');
$_SESSION['verify_code'] = rand(10000,99999);
$config = array(
'word' => $_SESSION['verify_code'], //'Random word',
'img_path' => './'.PUB . '/captcha/', //图片保存的路径
'img_url' => base_url('public/captcha'), // 图片地址
'font_path' => './system/fonts/texb.ttf', // 字体路径
'img_width' => 150,
'img_height' => 30,
'expiration' => 7200 //过期时间7200秒
);
$captcha = create_captcha($config);
//print_r($captcha);
return $config['img_url'].'/'.$captcha['filename'];
}
}