Как лучше реализовать корзину для магазина?
На все эти вопросы легко ответить самостоятельно, если просто немного подумать.
Никакое знание РНР тут не требуется - только здравый смысл и минимальное понимание принципа работы веб-сайта.

Обычно для анрегов корзина делается в сессии, а для регов - в базе.
При логине и наличии корзины в сессии, содержимое мержится с корзиной в базе. То есть такого вопроса "как сделать идентификацию" в принципе не возникает - все делается само собой. Когда юзер авторизовался, у нас есть и его ид, и сессиия. Что тут может быть не ясно?
Давай предположим, что корзина основана на бд. Тебе понадобиться как минимум идентифицировать пользователя (самый простой способ, в качестве идентификатора использовать сессию). В таблице, тебе нужны поля : id товара и количество (минимум).
А теперь представь, что кто-то добавил в корзину товар и вышел - не очень хорошо, нужно очищать старые записи (добавляем поле со временем добавления записи и создаём задание на удаление).

Просто, не правда ли :) (сарказм).
А теперь представь, что сессии упрощают все выше. И тебе не нужно париться с очищением заказов.
Решить проблему с блокировкой файла сессий можно настроив их хранение в redis.

Сессии - палка о двух концах, когда нужно хранить немного данных, некоторое время - идеальный инструмент.