[英]Let users access to part of website only if they're approved
我正在使用laravel 5.4,并且网站的一部分提供下载链接,但我只需要将此下载链接提供给为该链接付费的用户。
示例:我有一些可供用户购买以学习的课程。 每个课程都有不同的下载链接。 在这里,我想显示用户已购买给他/她的确切课程的下载链接,而不是30天之内的所有课程。
我怎样才能做到这一点?
PS:我只需要有关数据库结构的指南,以了解如何仅在有限的时间内将特定用户与特定课程相关联。
谢谢。
我对Laravel并不是很了解,但是在PHP中很容易做到。 您可以做的一件事是将信息存储在这样的会话中:
$_SESSION['premium'] = true;
因此,您可以像这样检查会话是否正确:
if ($_SESSION['premium'] = true) {
# Paid content
} else {
echo "Sorry! This is for premium members only!";
}
您还可以选择查询数据库,以查看用户是否将名为“付费”的列设置为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";
}
尝试一下,告诉我如何!
假设您的用户先登录。
使用user_id
, course_id
和timestamps为Purchases
创建模型,并建立一对多关系。
根据您的逻辑,当有人购买课程时,您会在上面的“购买”表中添加一条记录。 假设您有这些购买的清单,则可以通过以下方式获取这些购买
User::find(1)->purchases
这将返回允许下载的购买内容。 您可能需要使用范围进行其他验证,这可能会影响您30天的可用性规则,例如,仅当今天的日期在created_at
列的30天之内时才可以下载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.