好希望有人可以幫助我這個。這裏是情況,我有註冊頁面,允許用戶註冊,但只允許用戶輸入他們的名字,姓氏電子郵件和密碼。數據存儲在臨時用戶表中,這是針對尚未激活其帳戶的用戶。隨機用戶名
成功註冊後,用戶可以通過電子郵件激活他們的帳戶,一旦激活,數據將被移動到不同的表中並從臨時表中刪除(我知道有些人可能不同意這種方法,但這是方法我選擇了)。所有這些都很好。
我現在面臨的問題是,我有一個用於用戶名的字段,這實際上只用於構建像這樣的url:example.com/home/first.last.56但它必須是唯一的當然用戶將能夠稍後改變這一次活動和登錄英寸
我知道這會更容易,如果我只是讓用戶選擇自己的用戶名,可能更簡單的長期來說,但對於暫時這不是我想要做的事。
事情我曾經想過做:
從「臨時表」使用唯一的行ID和放置在像這樣的字符串的結尾:first.last.56其中第一和最後一個是用戶名和姓以及56是來自臨時表的唯一行標識。這工作正常,但即時通訊認爲,一旦表增長說1500或2000,那麼用戶名將長,即first.last.1597和url的方式看起來有點眼睛,並且該url不是非常用戶友好。我想保持這個2位數的最大值。
有什麼其他方法可以實現這一點,同時保持唯一的用戶名?
也可以使用字母形式的名字或姓氏來創建用戶名,只要名稱與用戶真實姓名相似即可。
這裏是我的代碼看起來像至今:
$new_member_insert_data = array(
'First_Name' => ucfirst(strtolower($first_name)),
'Last_Name' => ucfirst(strtolower($last_name)),
'Email' => $this->input->post($this->session->userdata('email_n_attribute')),
'Password' => $hash,
'Confirm_Code' => $confirm_code,
'IP' => $_SERVER['REMOTE_ADDR']
);
$insert = $this->db->insert('Temp_Account', $new_member_insert_data);
$this->db->select('idAccount');
$query = $this->db->get_where('Temp_Account', $new_member_insert_data);
if($query->num_rows() == 1){
foreach($query->result() as $row){
$user_name = array('User_Name' => $first_name.'.'.$last_name.'.'.$row->idAccount);
$this->db->where('idAccount', $row->idAccount);
$this->db->update('Temp_Account', $user_name);
}
}
你能擁有像,1000 +約翰呢? –
檢查是否存在相同的第一個和最後一個記錄?如果是這樣,請計算多少並添加1. First John Doe = john.doe.1 Second John Doe = john.doe.2 – Pitchinnate
您還可以將ID轉換爲Base64,而不是Base10,這會將其更短。我也同意上面的檢查 - 在添加任何數字之前查看它是否是重複的。 – Jack