只有获得批准后,才允许用户访问部分网站

时间:2017-07-27 03:43:56

标签: php database laravel

我正在使用laravel 5.4并且我的网站的一部分提供了下载链接,但我只需要为付费链接的用户提供此下载链接。

实施例: 我有一些用户可以购买的课程。每门课程都有不同的下载链接。在这里,我想显示用户已经向他/她购买的精确课程的下载链接,而不是30天内的所有课程。

我该怎么做?

  

PS:我只需要有关如何关联的数据库结构指南   特定用户只能在有限时间内使用特定课程。

感谢。

2 个答案:

答案 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的表:

  • ID
  • USER_ID
  • COURSE_ID

然后在页面上查询该表:

$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)

假设您的用户首先登录。

使用Purchasesuser_id和时间戳为course_id创建模型,并设置一对多的关系。

在有人购买课程时,您可以在上面的“购买”表中添加记录。假设您有这些购买的清单,您可以通过

获取这些购买
User::find(1)->purchases

这将返回允许下载的购买。您需要使用范围进行额外验证,以实现30天的可用性规则,例如:只有今天的日期在created_at列的30天内才能下载。