Как реализовать доступ к определённой странице только после оплаты?

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

Если кому-то интересно: Flipbook (перелистывание страниц книги) я реализовал с помощью библиотеки Turn.js


Ответы (2 шт):

Автор решения: Пчелобав

Можно сделать переменную, которая при подтверждении покупки будет равна 1. На странице с книгой нужно заставить юзера залогиниться, и если та самая переменная(она должна быть привязана к учётной записи юзера) будет равна единице - ничего не делать, а если равна другому значению - перекинуть на страницу с сообщением типа "Доступ запрещён".

P. S. Я новичок, так что не судите строго

→ Ссылка
Автор решения: Давид Манжула

Итак, изначально у нас в БД есть таблица users, в которой ключевое поле - user_id и таблица books с полем book_id.
Создаем таблицу, к примеру transactions. В ней будут поля: transaction_id, user_id, book_id. Так же можно сохранять, к примеру дату покупки и сумму, но сейчас не об этом.

То есть у нас в разных таблицах есть списки пользователей и книг. И их связывает таблица транзакций. Она указывает, какой пользователь купил какую книгу.

Представим, у пользователя id u121, у книги - b678.

Чтоб проверить, есть ли у пользователя доступ к книге, делаем запрос к БД:

SELECT * 
FROM `transactions` 
WHERE `user_id` = 'u121' AND `book_id` = 'b678'

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


Таким образом не нужно создавать для каждого пользователя уникальную ссылку - хватит ссылки example.com/books/b678, а сервер уже сделает запрос покажет либо книгу, либо просьбу купить, либо просьбу залогинится.

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

Вот тут можно посмотреть пример:
http://sqlfiddle.com/#!9/828e96/5

→ Ссылка