UserManager – registrácia nového užívateľa – kontrola zhody

Takeshi
Člen | 596
+
0
-

Ahojte … po dlhom čase sa mi konečne podarilo spraviť registráciu prihlasovanie/ odhlasovanie … avšak ako som si všimol, nekontroluje, či je užívateľ s daným menom/emailom už zaregistrovaný alebo nie … ako sa to rieši?

Mysteria
Člen | 797
+
+1
-
// 1. možnost dotazem...
if (!$this->database->table('users')->where(['name' => $user['name'], 'email' => $user['email'])->fetch()) {
	// V pořádku
} else {
	// Duplicita nicku nebo emailu
}

// 2. možnost unikátním klíčem nad databází
try {
	// Insert novýho usera
} catch (\PDOException $e) {
	if ((int)$e->errorInfo[1] === 1062) { // Pouze pro MySQL jiná DB může mít jiný označení pro narušení unikátního klíče
		// Duplicita nicku nebo emailu
	}
}
Šaman
Člen | 2668
+
+1
-

Ideálně obojí. To druhé jen pro hypotetickou možnost, že se někdo kolizní zaregistroval okamžik předtím, po té první kontrole. Jinak je samozřejmě lepší ta první možnost, protože nevyhazuje výjimku.

RSS tématu Téma zavřeno