Temat: Logowanie użytkownika
Podsumowując ja to zrobiłem tak:
W bootstrapie ustawiłem sobie adapter db
protected function _initDb()
{ $db_conf = new Zend_Config_Ini('sciezka do pliku conf' . 'database.ini','general');
$db = Zend_Db::factory(
$db_conf->db->adapter,
$db_conf->db->config->toArray() ); $db->query('Set names utf8'); //bo chce mieć fajne utf8
Zend_Db_Table::setDefaultAdapter($db);
}
sam plik database.ini wygląda tak:
[general]
db.adapter = PDO_MYSQL
db.config.host = localhost
db.config.username = nazwa-uzytkownika
db.config.password = moje-haslo
db.config.dbname = nazwa-bazy
a odbierając formularz logowania adapter pobieramy w prosty sposób:
(1 linijka poniżej)
$db = Zend_Db_Table::getDefaultAdapter();
$post = $_POST;
// oczywiście ja tego tak nie robie, bo $post powinno już być zwalidowane
// chodzi o pola login i password które nie mogą być puste
$adapter = new Zend_Auth_Adapter_DbTable(
$db,
'user',
'login',
'password',
'MD5(?) AND active=1'
); //MD5 - nie trzymamy w bazie haseł w zapisanych jawnie
//and dodatkowy warunek, aby się zalogować
//(w tabeli user, kolumna active musi być równa 1)
$adapter->setIdentity($post['login'])->setCredential($post['password']);
$result = $auth->authenticate($adapter);
a potem to już sobie tylko sprawdzamy $result, przez $result->getCode()
sama kontrola zalogowania może wyglądać tak:
if(Zend_Auth::getInstance()->hasIdentity()) {//rób coś}
Piotr Majowicz edytował(a) ten post dnia 07.06.10 o godzinie 13:37