本示例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