Php 未将值保存在codeigniter tank auth的数据库中

Php 未将值保存在codeigniter tank auth的数据库中,php,codeigniter,tankauth,Php,Codeigniter,Tankauth,我在tank auth.Field的注册表单中添加了两个字段,分别为fname和lname。 我在form_验证中添加了与您可以看到的控制器文件相同的内容。但是用户名、密码、电子邮件被注入数据库,fname和lname除外。代码中有什么错误?我已经检查了字段的名称是否正确。form验证也在工作,但是数据库字段名也是fname和lname。有人能解决这个问题吗?我已经在这个问题上坐了很长时间,但是找不到他们在工作 auth.php控制器是 if ($use_username) {

我在tank auth.Field的注册表单中添加了两个字段,分别为fname和lname。 我在form_验证中添加了与您可以看到的控制器文件相同的内容。但是用户名、密码、电子邮件被注入数据库,fname和lname除外。代码中有什么错误?我已经检查了字段的名称是否正确。form验证也在工作,但是数据库字段名也是fname和lname。有人能解决这个问题吗?我已经在这个问题上坐了很长时间,但是找不到他们在工作

auth.php控制器是

if ($use_username) {
                $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|min_length['.$this->config->item('username_min_length', 'tank_auth').']|max_length['.$this->config->item('username_max_length', 'tank_auth').']|alpha_dash');
            }
            $this->form_validation->set_rules('email', 'Email', 'trim|required|xss_clean|valid_email');
            $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|min_length['.$this->config->item('password_min_length', 'tank_auth').']|max_length['.$this->config->item('password_max_length', 'tank_auth').']|alpha_dash');
            $this->form_validation->set_rules('confirm_password', 'Confirm Password', 'trim|required|xss_clean|matches[password]');
            $this->form_validation->set_rules('fname', 'First Name', 'trim|required|xss_clean'); // I added
            $this->form_validation->set_rules('lname', 'Last Name', 'trim|required|xss_clean'); //I added


            $captcha_registration   = $this->config->item('captcha_registration', 'tank_auth');
            $use_recaptcha          = $this->config->item('use_recaptcha', 'tank_auth');
            if ($captcha_registration) {
                if ($use_recaptcha) {
                    $this->form_validation->set_rules('recaptcha_response_field', 'Confirmation Code', 'trim|xss_clean|required|callback__check_recaptcha');
                } else {
                    $this->form_validation->set_rules('captcha', 'Confirmation Code', 'trim|xss_clean|required|callback__check_captcha');
                }
            }
            $data['errors'] = array();

            $email_activation = $this->config->item('email_activation', 'tank_auth');

            if ($this->form_validation->run()) {                                // validation ok
                if (!is_null($data = $this->tank_auth->create_user(
                        $use_username ? $this->form_validation->set_value('username') : '',
                        $this->form_validation->set_value('fname'),//I added
                        $this->form_validation->set_value('lname'),
                        $this->form_validation->set_value('email'),
                        $this->form_validation->set_value('password'),
                        $email_activation)))
user.php模型

function create_user($data, $activated = TRUE)
    {
        $data['created'] = date('Y-m-d H:i:s');
        $data['activated'] = $activated ? 1 : 0;

        if ($this->db->insert($this->table_name, $data)) {
            $user_id = $this->db->insert_id();
            if ($activated) $this->create_profile($user_id);
            return array('user_id' => $user_id);
        }
        return NULL;
    }

再次您好,我通过不编辑TA模型来完成这项工作。 我所做的是让TA做这项工作,在创建_user()之后,我立即用我需要的其他信息(名字、姓氏、性别…)更新这个新创建的_用户

所以,敞开心扉

/libraries/Tank\u auth.php

并添加此方法

/**
 * Update user information on site (user_profile)
 * make sure keys of array match table fields to update
 * @param   integer
 * @param   array
 * @return  NULL
 */

function update_profile($user_id, $data)
{
    $this->ci->users->update_profile($user_id, $data);
    return NULL;
}
滚动至
function create_user(…)
add as last parameter
$user_data
so functiondeclaration如下所示

if ($this->form_validation->run()) {                                
                $user_data = array(
                    'first_name'    => set_value('fname'),
                    'last_name' => set_value('lname'),
                    ); // <- IMPORTANT
                if (!is_null($this->data = $this->tank_auth->create_user(
                        $use_username ? $this->form_validation->set_value('username') : '',
                        $this->form_validation->set_value('email'),
                        $this->form_validation->set_value('password'),
                        $email_activation, $user_data))) {                                  

                    $this->data['site_name'] = $this->config->item('website_name', 'tank_auth');

                    if ($email_activation) {...
函数创建用户($username、$email、$password、$email\u activation、$user\u data){…}

并编辑如下代码(在create_user方法中)

现在保存此文件并转到models/tank\u auth/users.php,创建此方法

/**
 * Update profile for a user
 *
 * @param   int
 * @param   array
 * @return  bool
 */
function update_profile($user_id, $data)
{

    $this->db->where('id', $user_id);
    $this->db->update($this->profile_table_name, $data);
}
现在转到控制器/auth.php

查找
寄存器()
方法

并搜索(这是您在此处发布的代码的底部部分)

把它改成这样

if ($this->form_validation->run()) {                                
                $user_data = array(
                    'first_name'    => set_value('fname'),
                    'last_name' => set_value('lname'),
                    ); // <- IMPORTANT
                if (!is_null($this->data = $this->tank_auth->create_user(
                        $use_username ? $this->form_validation->set_value('username') : '',
                        $this->form_validation->set_value('email'),
                        $this->form_validation->set_value('password'),
                        $email_activation, $user_data))) {                                  

                    $this->data['site_name'] = $this->config->item('website_name', 'tank_auth');

                    if ($email_activation) {...
if($this->form\u validation->run()){
$user\u data=数组(
“first_name”=>设置_值('fname'),
'last_name'=>设置_值('lname'),
);//数据=$this->tank\u auth->create\u user(
$use\u username?$this->form\u validation->set\u value('username'):“”,
$this->form\u validation->set\u value('email'),
$this->form\u validation->set\u value('password'),
$email_activation,$user_data)){
$this->data['site\u name']=$this->config->item('site\u name','tank\u auth');
如果($email_activation){。。。
if ($this->form_validation->run()) {                                
                $user_data = array(
                    'first_name'    => set_value('fname'),
                    'last_name' => set_value('lname'),
                    ); // <- IMPORTANT
                if (!is_null($this->data = $this->tank_auth->create_user(
                        $use_username ? $this->form_validation->set_value('username') : '',
                        $this->form_validation->set_value('email'),
                        $this->form_validation->set_value('password'),
                        $email_activation, $user_data))) {                                  

                    $this->data['site_name'] = $this->config->item('website_name', 'tank_auth');

                    if ($email_activation) {...