Реєстрація та авторизація користувачів

підготовка

Для початку створимо базовий контролер Base.php в application / classes / Controller:

Як видно він успадкований від контролера Controller_Template і встановлений головний шаблон "main", створимо цей файл в папці application / views / main.php:

Він буде виводити форму входу на сайт, давайте якраз і створимо її в папці application / views / form_login.php:

Як видно в контент завантажується форма реєстрації registration_form, давайте так само створимо її в папці application / views / registration_form.php:

Налаштування бази даних

Важливий момент. обов'язково додавайте Cookie :: $ salt = 'jh50sornxh62kx8enhg'; сіль перед підключенням модулів.

Скопіюємо конфиг бази даних з modules / database / config / database.php в application / config / database.php, в ньому налаштуємо підключення:

У цьому файлі встановіть настройки host, username, password, dbname до вашої бд. У корені модуля orm знаходиться файл modules / orm / auth__schema__mysql.sql, запустіть його наприклад в phpmyadmin і у нас з'являться 4 таблиці:

На цьому все, настройка бд закінчена.

Реєстрація

Скопіюємо файл modules / auth / config / auth.php в application / config / auth.php, змінимо в ньому драйвер на orm, встановимо hash_key і session_key. Має вийти щось на подобу цього:

Далі в методі action_registration потрібно при створенні користувача створювати цей хеш і зберігати в БД:

Так само була додана сторінка особистого Особистого кабінету в application / views / user_profile.php:

І додали в контролер Users дію для разлогірованіе користувача, action_logout:

if (HTTP_Request :: POST == $ this-> request-> method ()) $ post = Validation :: factory ($ _ POST);
$ Post -> rule (true, # 'Not_empty #')

-> Rule (# 'username #', # 'Min_length #', array (# ': value #', 26))
-> Rule (# 'username #', # 'Max_length #', array (# ': value #', 35))
-> Rule (# 'username #', # 'Alpha_numeric #', array (# ': value #', true))

-> Rule (# 'email #', # 'Email #')

-> Rule (# 'password_confirm #', # 'Matches #', array (# ': validation #', # 'Password_confirm #', # 'Password #'));

if ($ post -> check ())

$ User = ORM :: factory (# 'User #') -> create_user ($ _ POST, array (# 'username #', # 'password #', # 'email #'));

Auth :: instance () -> force_login ($ _ POST [# 'email #']);
HTTP :: redirect (# '/ setting #');
> Else var_dump ($ post -> errors ());
>
>

Мій код без моделі не працює (((Чому?

У мене Ваш код запустився без помилок, тому:
1. Можливо у вас не підключені модулі auth, orm.
2. Також може бути що у вас не проходить валідацію в ORM, за замовчуванням виставлене обмеження в Model_Auth_User на мінімальну довжину пароля 8 символів.