Codeigniter注册登录代码示例


Posted in PHP onJune 12, 2014

本示例Codeigniter注册登录代码源自一个codeigniter的项目,现分享下~

由于使用了 Active Record 类,一般数据库操作只有两层,即是C和V

controllers/login.php文件:

<?php
class Login extends CI_Controller {
 private $pass = '';
 public function __construct() {
  parent::__construct ();
  $this->load->helper ( array (
    'form',
    'url' 
  ) );
  $this->load->library('session');
 }
 public function index() {
  $this->load->view ( 'login' );
 }
 public function formsubmit() {
  $this->load->library ( 'form_validation' );  $this->form_validation->set_rules ( 'username', 'Username', 'required' );
  $this->form_validation->set_rules ( 'password', 'Password', 'required' );
  if ($this->form_validation->run () == FALSE) {
   $this->load->view ( 'login' );
  } else {
   if (isset ( $_POST ['submit'] ) && ! empty ( $_POST ['submit'] )) {
    $data = array (
      'user' => $_POST ['username'],
      'pass' => md5($_POST ['password'])
    );
    $newdata = array(
      'username'  =>  $data ['user'] ,
      'userip'     => $_SERVER['REMOTE_ADDR'],
      'luptime'   =>time()
    );
    if ($_POST ['submit'] == 'login') {
     $query = $this->db->get_where ( 'uc_user', array (
       'user' => $data ['user'] 
     ), 1, 0 );
     foreach ( $query->result () as $row ) {
      $pass = $row->pass;
     }
     if ($pass == $data ['pass']) {
      $this->session->set_userdata($newdata);
      $this->load->view ( 'usercenter', $data );
     }
    } else if ($_POST ['submit'] == 'register') {
     $this->session->set_userdata($newdata);
     $this->db->insert ( 'uc_user', $data );
     $this->load->view ( 'usercenter', $data );
    } else {
     $this->session->sess_destroy();
     $this->load->view ( 'login' );
    }
   }
  }
 }
}

views/login.php文件:

<html>
<?php echo validation_errors(); ?>
<?php echo form_open('login/formsubmit'); ?>
<table>
<tr>
<td>用户名</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>
<input type="submit" name="submit" value="login">
</td>
<td>
<input type="submit" name="submit" value="register">
</td>
</tr>
</table>
</form>
</html>

sql语句:

uc_user:

  CREATE TABLE `uc_user` (                                   
           `id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,  
           `user` varchar(20) NOT NULL,                             
           `pass` char(32) NOT NULL,                                
           `role` enum('root','normal') NOT NULL DEFAULT 'root',    
           `del` decimal(1,0) NOT NULL DEFAULT '0',                 
           PRIMARY KEY (`id`)                                       
         ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 
PHP 相关文章推荐
如何获得PHP相关资料
Oct 09 PHP
Mysql的常用命令
Oct 09 PHP
用PHP实现小型站点广告管理
Oct 09 PHP
PHP 学习路线与时间表
Feb 21 PHP
PHP中的string类型使用说明
Jul 27 PHP
PHP array_multisort()函数的使用札记
Jul 03 PHP
php中模拟POST传递数据的两种方法分享
Sep 16 PHP
探讨Hessian在PHP中的使用分析
Jun 13 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
Mar 20 PHP
PHP错误处理函数
Apr 03 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 #PHP
codeigniter数据库操作函数汇总
Jun 12 #PHP
使用PHP函数scandir排除特定目录
Jun 12 #PHP
使用配置类定义Codeigniter全局变量
Jun 12 #PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 #PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
Jun 12 #PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
Jun 12 #PHP
You might like
ThinkPHP单字母函数(快捷方法)使用总结
2014/07/23 PHP
nginx下安装php7+php5
2016/07/31 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
Vue实现动态响应数据变化
2017/04/28 Javascript
vue-cli的eslint相关用法
2017/09/29 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
javascript实现留言板功能
2020/02/08 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
深入理解Python中的内置常量
2017/05/20 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
Python datetime 如何处理时区信息
2020/09/02 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
护士专业推荐信
2013/11/02 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js