恐怕沒有簡單的方法來做到這一點
您需要修改庫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;
}
}
這是非常靈活的方式來擴展您提供的示例中的字段,非常感謝。 – conmen