Как лучше всего реализовать функцию «избранное»? (например, любимые продукты на веб-сайте, управляемом данными) - PullRequest
2 голосов
/ 20 мая 2010

Я написал динамически управляемый базой данных, объектно-ориентированный веб-сайт с интерфейсом администрирования и т. Д. И т. Д. Я хотел бы добавить функцию, с помощью которой клиенты могут сохранять элементы как «избранные», без необходимости создавать учетную запись и вход в систему, чтобы вернуться позже, но я не знаю, как именно это сделать ... Я вижу три варианта:

  1. Записывать избранное на основе IP-адреса, а затем изменять его для регистрации в учетной записи, если клиент затем создает учетную запись;
  2. Заставить клиентов создать учетную запись, чтобы иметь возможность использовать эту функцию;
  3. Журнал избранных на основе IP-адреса, но дает пользователям возможность сохранять избранные под указанным именем.

Проблема с вариантом 1 заключается в том, что я мало знаю об IP-адресах - мой папа считает, что они уникальны, но я знаю, что у людей были проблемы с такими системами.

Проблема с 1 и 2 заключается в том, что учетные записи еще не были открыты для клиентов - только администраторы могут войти в систему в данный момент. Это должно быть легко изменить (не больше, чем на утреннюю или дневную работу), но мне также придется создавать группы пользователей.

Проблема с вариантом 3 заключается в том, что если пользователь A сохраняет список избранных файлов с именем «My Favorites», а затем пользователь B пытается сохранить список под этим именем, и ему отказывают, пользователь B сможет получить доступ к списку. сохранено пользователем A, потому что теперь они знают, что оно уже существует. Решением этой проблемы является защита списков паролем, но чтобы приложить все усилия, я также могу реализовать вариант 2.

Конечно, я всегда мог использовать вариант 4; используйте альтернативу, если кто-то может предложить лучшее решение, чем любой из вышеперечисленных вариантов.

Так кто-нибудь когда-нибудь делал что-то подобное раньше? Если да, то как ты это сделал? Что вы рекомендуете (или не рекомендуете)?

Заранее большое спасибо,

С уважением,

Richard

1 Ответ

4 голосов
/ 20 мая 2010

Проблема с использованием решения на основе IP заключается в том, что IP-адреса не обязательно являются уникальными. Маршрутизатор позволяет нескольким пользователям получать доступ к Интернету с помощью одного «внешнего» IP-адреса, который будет видеть ваш веб-сайт, и предоставляет каждому пользователю уникальный «внутренний» адрес, к которому у вас нет доступа. Маршрутизаторы используются в компаниях, учебных заведениях, домах, местах, которые предлагают доступ к интернету, например, в кафе. Таким образом, решение на основе IP не будет работать для всех - например, и мой сосед по комнате, и я подключаемся к Интернету с помощью маршрутизатора и, таким образом, совместно используем один внешний IP-адрес и в результате получим один список избранного, который могут видеть оба.

Лучшим решением было бы сохранить некоторый GUID в файле cookie на клиентском компьютере, когда они пытаются добавить избранное. Затем в вашей базе данных вы привязываете избранное к этому GUID, пока пользователь не создаст учетную запись в вашей системе. Но это не без его проблем; если пользователь удалит файл cookie со своего компьютера, он потеряет доступ к своему избранному.

Лучшим вариантом будет создать учетные записи в системе, и после входа в систему они смогут создавать избранные записи, связанные с их учетными записями. Таким образом, вариант 2 будет предпочтительным решением, особенно для данных, которые должны сохраняться до тех пор, пока пользователь не решит удалить их.

...