我是CI的新学员,并且在我的项目中关注这个CI简单登录库(see here),除了我想在数据库表中添加更多字段之外,这个简单库的一切都很好用,如何创建和获取新添加的字段?
此库的来源仅包含'id','username','email'和'password'字段,如果我想在'address'等字段中添加,并使其可用于创建用户{ {1}}并在视图中获取$this->simplelogin->create('user', 'user@mail.com', 'password', 'address', true);
感谢。
答案 0 :(得分:1)
您可以更改:
添加属性
private $ address_field ='address'; //数据库中的地址
//确保您的数据库中必须包含字段address
长葛功能create():
function create($user = '', $email = '', $password = '', $address = '', $auto_login = TRUE)
{
// Check data is set
if ($user == '' || $password == '' || $email == '')
return FALSE;
// Email or User already exists | Probably will not need to check the `address`
$this->CI->db->where($this->user_field, $user);
$this->CI->db->or_where($this->email_field, $email);
$query = $this->CI->db->get($this->user_table);
if ($query->num_rows() > 0)
return FALSE;
// Create user into the database
$data = array($this->user_field=>$user, $this->email_field=>$email, $this->password_field=>crypt($password, $this->salt), $this->address_field=>$address);
if (!$this->CI->db->insert($this->user_table, $data))
return FALSE;
// Automatically login to created account
if ($auto_login) {
$this->CI->session->sess_destroy();
$this->CI->session->sess_create();
$this->CI->session->set_userdata(array('username'=>$user, 'email'=>$email,'address'=>$address));
}
return TRUE; // Created!
}
长葛函数get_data_user():
function get_data_user($param = 'username') { // default is get session username
$sess = $this->CI->session->userdata($param);
if (!$sess)
return '';
return $sess;
}
在登录功能中更改第106行:
$this->CI->session->set_userdata(array('username'=>$row[$this->user_field], 'email'=>$row[$this->email_field],'address'=>$row[$this->address_field])); // Set session data
答案 1 :(得分:0)
我担心没有简单的方法可以做到这一点
你需要将库Simplelogin.php修改为类似的东西 请记住,您需要将地址字段添加到表
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
/*
SimpleLogin 0.0.3 https://launchpad.net/simplelogincodeigniter
A CodeIgniter 2.X library for do a login system simple
Author: costales http://launchpad.net/~costales
Based on Anthony Graddy & Alex Dunae & Hitesh Ubharani's versions
Licensed under LGPL3
*/
class Simplelogin {
private $CI;
private $user_table = 'users';
private $user_field = 'username';
private $email_field = 'email';
private $address_field = 'address'; // add the name of the field in the database
private $password_field = 'password';
private $salt = '$2a$07$R.gJbYU2N.FmA4hPp1y2CN$';
public function __construct() {
$this->CI = & get_instance();
}
/* Create a user account
*
* @access public
* @param string
* @param string
* @param string
* @param bool
* @return bool
*/
function create($user = '', $email = '', $password = '', $address = '', $auto_login = TRUE) {
// Check data is set
if ($user == '' || $password == '' || $email == '')
return FALSE;
// Email or User already exists
$this->CI->db->where($this->user_field, $user);
$this->CI->db->or_where($this->email_field, $email);
$query = $this->CI->db->get($this->user_table);
if ($query->num_rows() > 0)
return FALSE;
// Create user into the database
$data = array(
$this->user_field => $user,
$this->email_field => $email,
$this->address_field => $address,
$this->password_field => crypt($password, $this->salt)
);
if (!$this->CI->db->insert($this->user_table, $data))
return FALSE;
// Automatically login to created account
if ($auto_login) {
$this->CI->session->sess_destroy();
$this->CI->session->sess_create();
$this->CI->session->set_userdata(array(
'username' => $user,
'email' => $email,
'address' => $address
));
}
return TRUE; // Created!
}
/* Delete user
*
* @access public
* @param integer
* @return bool
*/
function delete($username = '') {
if ($username == '')
return FALSE;
$data = array($this->user_field => $username);
if ($this->CI->db->delete($this->user_table, $data))
return TRUE; // Deleted
else
return FALSE; // Not deleted
}
/* Login user
*
* @access public
* @param string
* @param string
* @return bool
*/
function login($user = '', $password = '') {
// Data was sent
if ($user == '' OR $password == '')
return FALSE;
// Check if already logged in
if ($this->CI->session->userdata('username') == $user)
return TRUE;
// Check user exists
$data = array($this->user_field => $user);
$query = $this->CI->db->get_where($this->user_table, $data);
if ($query->num_rows() != 1)
return FALSE;
// Check against password
$row = $query->row_array();
if (crypt($password, $this->salt) != $row[$this->password_field])
return FALSE;
$this->CI->session->sess_destroy(); // Destroy old session
$this->CI->session->sess_create(); // Create a fresh, brand new session
$this->CI->session->set_userdata(
array(
'username' => $row[$this->user_field],
'email' => $row[$this->email_field],
'address' => $row[$this->address_field]
)); // Set session data
return TRUE; // Login was successful
}
/* Logout user
*
* @access public
* @return void
*/
function logout() {
$this->CI->session->sess_destroy(); //Destroy session
}
/* Check if the user is logged
* @access public
* @return bool
*/
function is_logged() {
if ($this->CI->session->userdata('username'))
return TRUE;
else
return FALSE;
}
/* Get current username or email
* @access public
* @param string
* @return string
*/
function get_data_user($param = 'username') {
if ($param == 'username')
return $this->CI->session->userdata('username');
if ($param == 'email')
return $this->CI->session->userdata('email');
if ($param == 'address')
return $this->CI->session->userdata('address');
return '';
}
/* Change password for a user
* @access public
* @param string
* @param string
* @param string
* @return bool
*/
function change_password($user = '', $old_password = '', $new_password = '') {
// Check data is set
if ($user == '' || $old_password == '' || $new_password == '')
return FALSE;
// Check old password for this user
$data = array($this->user_field => $user, $this->password_field => crypt($old_password, $this->salt));
$query = $this->CI->db->get_where($this->user_table, $data);
if ($query->num_rows() != 1)
return FALSE;
// Update password
$data = array($this->password_field => crypt($new_password, $this->salt));
$this->CI->db->where($this->user_field, $user);
if (!$this->CI->db->update($this->user_table, $data))
return FALSE;
return TRUE;
}
/* Change email for a user
* @access public
* @param string
* @param string
* @return bool
*/
function change_email($user = '', $new_email = '') {
// Check data is set
if ($user == '' || $new_email == '')
return FALSE;
// Update email
$data = array($this->email_field => $new_email);
$this->CI->db->where($this->user_field, $user);
if (!$this->CI->db->update($this->user_table, $data))
return FALSE;
// Set new internal email
$this->CI->session->set_userdata(array('email' => $new_email));
return TRUE;
}
}