0

我使用 Codeigniter 框架 + Tank_Auth 注册库。它们工作得很好,但我只需要稍微改变一下寄存器形式。

我想从电子邮件地址生成用户名,而不是从注册表单中获取。我在 library/Tank_auth.php 文件中添加了一个简单的函数。这是我的用户名生成器功能:

function _create_username_from_email($email)
{
$user = strstr($email, '@', true); // As of PHP 5.3.0
return $user;
}
  1. 请让我知道我需要在哪里运行我的函数并将其写入数据库。

  2. 我还需要从注册表单中删除用户名字段。所以我需要如何为控制器中的用户名字段传递表单验证。

如果你们中的任何人能帮助我解决这些问题,我将非常高兴。

谢谢

4

1 回答 1

1

在行121中,application/models/tank_auth/users您有:

/**
 * Create new user record
 *
 * @param   array
 * @param   bool
 * @return  array
 */
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;
}

就在if ($this->db->insert($this->table_name, $data)) {插入之前:

$data['username'] = strstr($data['email'], '@', true);

PS 我希望你理解它,但以防万一 - 如果你有两个或多个用户使用相同的电子邮件用户名部分,john@hotmail.com并且john@gmail.com他们都将使用相同的用户名,这可能会导致意外行为。

于 2012-07-02T14:13:07.257 回答