Как реализовать ссылку, которая может получить бонус в 5 раз от разных людей в социальной сети? - PullRequest
0 голосов
/ 25 апреля 2010

В некоторых социальных играх на Facebook пользователь может опубликовать ссылку на свой фид: «Нажмите здесь, чтобы получить бонусные золотые монеты - только для первых 5 человек».

Как мы можем создать такую ​​ссылку?

Ссылка не должна быть легко "сгенерирована" любыми людьми как способ обмана.

Кроме того, какие таблицы базы данных должны быть добавлены для обработки:

1) бонус может быть востребован до 5 раз
2) должны быть востребованы разными людьми

(каждый человек имеет уникальный числовой идентификатор на платформе социальной сети, такой как Facebook)

Обновление: я думал о том, чтобы получить следующий первичный идентификатор (целочисленный индекс) в таблице призов и md5 с каким-то секретным ключом, чтобы получить «код приза», и убедитесь, что его нет в таблице «PrizeClaimed» - если он уже существует, просто используйте следующий первичный идентификатор (добавив запись и пересчитав md5, пока не будет найден уникальный). Эта таблица PrizeClaim является таблицей соединений для pri_code и user_id, поэтому один приз может претендовать на несколько человек, а один человек может претендовать на несколько призов. Если, когда человек нажимает на ссылку, мы добавляем в таблицу запись priz_code и user_id - но только в том случае, если количество записей, полученных при совпадении кода выигрыша, равно 4 или меньше. Если уже 5, то просто сообщите «слишком поздно - востребовано всеми людьми». Интересно, как этот метод, есть ли лазейки, улучшения или другие способы его реализации?

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

1 Ответ

0 голосов
/ 25 апреля 2010

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

...