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

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
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 | 2666
+
+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.