«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2018/05/31 06:26:26  №1199850 1
ОП хелп. Хочу сделать, что когда любой человек заходит на мой сайт, ему выдают уникальные номер в куки.
Потом, если он создает тест или проходит. Я при нажатие создать тест, или закончить прохождение теста. Создаю анонимного пользователя в дб, у которого в параметрах только уникальый номер кук.
И если он потом регистрируется, то я смотрю, есть ли пользовательи анонимный с таким номером в куки. Если есть, то я просто делаю апдейт и добавляю его логин, почту в этого пользователя и он становится уже не анонимным.

Но вот пара вопросов.
1) Если человек создает тест, после введет свой имеил (не регистрируясь, а просто что бы получать статистику, как я понимаю этот имеил туда же в аноним пользователя я записываю), а потом кто то другой на этом же компе создаст тест, и напишет свой имеил. То он будет получать сообщения за все тесты, которые были сделаны на этом компе. А если он зарегистрируется. То получит все тесты, которые с этим ИД были созданы. И опять же перезапишет имеил, и тот человек который создал тест больше не получит сообщений.
2)А если человек создает пару тестов на разных компах, и везде введет 1 имеил для получения ответов. А потом решит зарегистрироваться с этой почтой. Мне ему все тесты, всех анонимных пользователей с подобным имейлом давать? Или только те кто где уникальный ид, такой же.
3)При создание теста есть галочка скрытые ответы или нет, человек ставит скрытые и после создания теста, я делаю ссылку где можно результаты смотреть. Смотреть их можно по ссылке, то есть любой кто её знает сможет туда заходить и смотреть. Если я не буду выводить просто сылку на эти ответы и она будет заковыристой, это и есть ограничение доступа? Или я должен как то для этого куки еще использовать? Но тогда только на его компе он сможет октрыть эту ссылку.
Ответы: >>1208761
Аноним 2018/06/12 22:42:42  №1208761 2
>>1199850

Ты вообще заметил правильную вещь. С анонимной регистрацией действительно есть проблемы:

- если человек создал тест, а позже кто-то другой с того же компьютера зарегистрировался, получается, он получит доступ к тому тесту?
- если человек создал тест, получил куку, а потом внезапно залогинился, что делать? Склеивать эту куку и все тесты с нее с его аккаунтом или же "забыть" эту куку и потерять доступ к управлению тестами?

Тут действительно могут быть проблемы из-за того, что эта анонимная регистрация никак не отображается в интерфейсе. И пользователю не очевидно состояние.

Потому мне сейчас пришел в голову другой вариант: при создании теста генерировать специальную куку для доступа к тесту, действительную только для этого теста и никак не мешающую другим тестам и логину/регистрации. Если речь о куках, то это может быть например кука owner[12345]=xxxx или owner_12345=xxxx. Также, если пользователь даст почту, то выслать на нее специальную ссылку, дающую доступ к управлению именно этим тестом (которая как раз будет ставить такую куку на какое-то время).

То есть не создавать пользователю анонимный аккаунт. А выдавать ему для каждого созданного теста свою куку. И может быть, стоит как-то это показывать на странице, не знаю, сделать ссылку "мои тесты" может быть.

Это не исключает возможности регистрации потом, можно после создания теста показывать ссылку вида /register?from=test_12345, которая привяжет этот тест в аккаунт. Также, можно сделать второй вариант, если человек открывает ссылку из почты для управления тестом и он залогинен, предложить добавить тест в аккаунт.

То есть попробуй продумать все такие сценарии, какие возможны проблемы. Все-таки возможность создавать тесты без регистрации довольно важна и может увеличить число пользователей.

> Если человек создает тест, после введет свой имеил (не регистрируясь, а просто что бы получать статистику, как я понимаю этот имеил туда же в аноним пользователя я записываю)

Лучше привязывать email только к тесту, а не к анонимному пользователю.

> А если человек создает пару тестов на разных компах, и везде введет 1 имеил для получения ответов. А потом решит зарегистрироваться с этой почтой. Мне ему все тесты, всех анонимных пользователей с подобным имейлом давать? Или только те кто где уникальный ид, такой же.

Вообще, тут я проблемы не вижу, если человек при создании теста указал свой email, а при регистрации подтвердил владение им, то проблемы нет. Хотя конечно, есть вариант, что кто-то создаст легкий тест и укажет email препода, чтобы ему подсунуть в аккаунт этот тест. Может, лучше их по умолчанию и не привязывать к аккаунту.

> Если я не буду выводить просто сылку на эти ответы и она будет заковыристой, это и есть ограничение доступа?

Так и надо сделать. Ссылка с каким-то трудноподбираемым токеном, дающая доступ к тесту.