simplelogin库中的Codeigniter添加字段

simplelogin库中的Codeigniter添加字段,codeigniter,Codeigniter,我是CI的新手,在我的项目中遵循这个CI简单登录库,这个简单库的一切都很好,除了如果我想在数据库表中添加更多字段,我如何创建和获取新添加的字段 此库仅包含“id”、“用户名”、“电子邮件”和“密码”字段,如果我想添加“地址”等字段,并使其在“创建用户”中可用,$This->simplelogin->create('user'),'user@mail.com“,”密码“,”地址“,”为真)和fetch$this->simplelogin->get_data_user('address')在视图中

我是CI的新手,在我的项目中遵循这个CI简单登录库,这个简单库的一切都很好,除了如果我想在数据库表中添加更多字段,我如何创建和获取新添加的字段

此库仅包含“id”、“用户名”、“电子邮件”和“密码”字段,如果我想添加“地址”等字段,并使其在“创建用户”中可用,
$This->simplelogin->create('user'),'user@mail.com“,”密码“,”地址“,”为真)
和fetch
$this->simplelogin->get_data_user('address')在视图中


谢谢。

恐怕没有简单的办法

您需要将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;
    }

}
您可以更改:

  • 添加属性

    私有$address_字段='address';//数据库中的地址

//确保数据库中必须有字段
地址

change函数create():

Changge函数get_data_user():

更改登录功能中的第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

这是从您提供的示例中扩展字段的非常灵活的方法,非常感谢。
function get_data_user($param = 'username') { // default is get session username
        $sess = $this->CI->session->userdata($param);
        if (!$sess)
            return '';

        return $sess;
    }
$this->CI->session->set_userdata(array('username'=>$row[$this->user_field], 'email'=>$row[$this->email_field],'address'=>$row[$this->address_field])); // Set session data