我使用Codeigniter框架+ Tank_Auth注册库。它们工作得很好,但我只需稍微更改寄存器形式。
我想从电子邮件地址生成用户名,而不是从注册表单中获取用户名。我在libraries / Tank_auth.php文件中添加了一个简单的函数。这是我的用户名生成器功能:
function _create_username_from_email($email)
{
$user = strstr($email, '@', true); // As of PHP 5.3.0
return $user;
}
请让我知道我需要在哪里运行我的功能并将其写入数据库。
我还需要从注册表中删除用户名字段。所以我需要如何在控制器中传递用户名字段的表单验证。
如果你们中的任何人能帮助我解决这些问题,我将非常高兴。
由于
答案 0 :(得分: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);
P.S。
我希望你理解它,但为了以防万一 - 如果你有两个或更多用户使用相同的电子邮件用户名部分,如john@hotmail.com
和john@gmail.com
,他们都将拥有相同的用户名,这可能会导致意外行为。