Это самый простой способ описать мою проблему с рабочим примером: даже если вы не вошли в систему, YouTube помнит, что вы наблюдали, и в следующий раз дает вам советы на основе предыдущих просмотренных фильмов.Как я могу запомнить голосование с помощью куки-файлов проще, чем это?
Мой сайт аналогичен в своем роде: пользователи могут голосовать за статьи без входа в систему, а сайт запоминает голоса с кукисами. Я вычислил рабочий метод, но должен быть более простой способ - и теперь использование БД ничего, кроме оптимизированного.
Для каждого посетителя есть чек, если у него есть куки. Если да, то я прошу его голоса. Если нет, я создаю фиктивного пользователя и отправлю ему куки. Теперь я храню эту метку времени «last_visit» пользователей. После этого все одинаково для обоих пользователей. Моя проблема заключается в том, что моя БД заполняется фиктивными пользователями, поэтому я допустил, что мои файлы cookie истекают через 3 месяца, и мой сайт регулярно проверяет, какие пользователи не посещали мой сайт за последние 3 месяца, и удаляет их из БД.
Я знаю, что я слишком усложнил это, но моя система голосования использует AJAX, и я не мог найти способ отправить cookie (и создать фиктивного пользователя) только в том случае, если голосование происходит, а не каждый раз, когда простой посетитель просматривает мой сайт - без права голоса.
Также примечание: я настаиваю на использовании файлов cookie - я знаю, что было бы проще хранить IP-адреса при голосовании, но есть школы, предприятия, использующие один и тот же IP-адрес, и мне нравится позволять их пользователям использовать мой сайт.
Что я пропустил здесь? Как это можно оптимизировать?
Я должен был упомянуть об этом: на моем сайте даются предложения, основанные на голосах, например: «кто голосовал за это, также проголосовал за них», поэтому я как-то связал голоса в БД. В настоящее время я использую пользователей для этого (манекены или настоящие пользователи). – ZTefter
@ZTefter Получил это. Немного сложнее. Вы все равно можете записать, кто голосовал за какой-то случайный хэш или что-то, что хранилось в cookie. Просто присоедините хеш к записям голосов, но фактически не создавайте записи пользователей. – dqhendricks
Хорошо, спасибо, я думаю, что попробую. Но я все еще придерживаюсь части, создающей куки. Голосование - это функция javascript AJAX, которая вызывает файл PHP с параметрами. Поэтому теоретически этот PHP должен создать cookie, это было бы лучше, но я не мог этого добиться. Действительно ли это возможно? Это правильный способ сделать это? – ZTefter