Сергей, подумай как отсекать не нужные проверки. Для примера, у тебя блог в 10 000 постов, на странице выводится по 10 постов, для проверки на просмотренные тебе не нужно проходить все 10 000 постов так как юзер врятле глубже 100-200 постов пройдет, поэтому проверяй только "свежак" - последнюю сотню или две. Это я абстрактно накидал идею.
Но получается что каждый итем генерирует дополнительный запрос к БД для вывода картинок, хотя при открытии карточки товара мы получаем всего лишь +1 запрос к БД, ведь в общем большом списке товаров доп картинки не нужны.
мне просто было интересно как это могло бы быть реализовано.
На счет email - да, это еще не дописал, просто выложил заготовку на обозрение.
По поводу пароля - читал в документации про password_hash() но пока решил более простой функцией зашифровать, чтобы не запутаться в коде.