Можно конечно записывать в куки захэшированный пароль, чтобы каждая страница проверяла соответствие куки - логин == бд.логин && пароль == бд.пароль, но я не уверен что это правильно.
это правильно. не безопасно, но правильно. не безопасно потому, что можно подойти к браузеру и стырить куки. но это проблема другого рода. можно поставить время жизни кук = 0 и это будет эмуляция сессий, но без генерирования тучи сессионных файлов.
т.е.
1. Пользователь вводит логин и пароль, они верны.
2. Ставим куки:
- ID - идентификатор пользователя
- HASH - md5(user_password_hash +
salt), где
user_password_hash - захэшированый в базе пароль
salt - соль
тогда на каждой странице запрос будет вида
SELECT * FROM `user` WHERE `id` = ID_из_куки
далее просто сравниваем $_COOKIE['HASH'] === md5($user['user_password_hash'] . $user['salt'])
Плюсы подхода - никогда не происходит уничтожение "сессии" (т.е. всегда пользователь авторизован), если вы не ставите время жизни куки = 0. Для многих сайтов, где не критична безопасность - это очень красивый, легкий и простой вариант авторизации.