我正在使用laravel 5.4并且我的网站的一部分提供了下载链接,但我只需要为付费链接的用户提供此下载链接。
实施例: 我有一些用户可以购买的课程。每门课程都有不同的下载链接。在这里,我想显示用户已经向他/她购买的精确课程的下载链接,而不是30天内的所有课程。
我该怎么做?
PS:我只需要有关如何关联的数据库结构指南 特定用户只能在有限时间内使用特定课程。
感谢。
答案 0 :(得分:0)
我对Laravel并不是那么有经验,但在PHP中很容易做到。您可以做的一件事是将信息存储在如下的会话中:
$_SESSION['premium'] = true;
那么你可以检查会话是否如此:
if ($_SESSION['premium'] = true) {
# Paid content
} else {
echo "Sorry! This is for premium members only!";
}
您还可以选择查询数据库,以查看用户是否将名为“paid”的列设置为1(true)或0(false)。我假设你明白该怎么做。
回复您最近的评论:
使用以下列创建一个名为purchases
的表:
然后在页面上查询该表:
$query = mysqli_query($connection_variable, "SELECT * FROM purchases WHERE user_id='$_SESSION['username'] AND course_id='$course_id'");
if (mysqli_num_rows($query) > 0) {
#Show course
} else {
echo "ERROR MESSAGE HERE";
}
试试并告诉我它是怎么回事!
答案 1 :(得分:0)
假设您的用户首先登录。
使用Purchases
,user_id
和时间戳为course_id
创建模型,并设置一对多的关系。
在有人购买课程时,您可以在上面的“购买”表中添加记录。假设您有这些购买的清单,您可以通过
获取这些购买User::find(1)->purchases
这将返回允许下载的购买。您需要使用范围进行额外验证,以实现30天的可用性规则,例如:只有今天的日期在created_at
列的30天内才能下载。