0

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;
}
  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 ご理解いただければ幸いですが、念のため - メールのユーザー名部分が同じユーザーが 2 人以上いjohn@hotmail.comjohn@gmail.com、両方とも同じユーザー名を持つ場合、予期しない動作が発生する可能性があります。

于 2012-07-02T14:13:07.257 に答える