Codeigniter高级会员制

时间:2013-02-12 20:51:37

标签: codeigniter membership

我目前正在开发一个文件托管网站,就像filehippo.com一样。我完成了它。但是,我的客户想要一个类似于专业版的高级会员制度。因此,只有高级会员才能在一段时间内(例如一个月左右)获得下载访问权限。

我现在有两张桌子:

  • 用户
  • 文件

我应该为会员身份创建一个新表吗? 这样做的最佳做法是什么?逻辑,也许是数据库结构。请给我一些建议。

非常感谢。

2 个答案:

答案 0 :(得分:0)

看起来您只是在用户表和文件中开发或添加一些列。

在user表中添加列user_id,level_access,非活动期间。然后你可以在文件表中添加id_user列,用于连接用户表。

可以设置有效的过期日期间隔:

function expiration($date) {
    /* $date = time is a register as user */
$sql=mysql_query("select ('$date' - INTERVAL 1 week ) as expired");
$row = mysql_fetch_array($sql);
$output=$row['expired'];
return $output;
}`

答案 1 :(得分:0)

如果他们为高级会员付费,我会创建另一个表并将其与付款的交易ID相关联。这将是许多premium_access行的一个用户行。通过这种方式,您可以获得历史记录,了解使用了多少天/月服务的付款,并允许为6个月或每年的成员收取折扣,并且仍然可以准确跟踪以确保您可以追踪任何漏洞或漏洞。< / p>

然后当你想知道他们什么时候到期时,它就是

  

从premium_access中选择*,其中user_id ='$ id'限制1个订单by end_date desc

编辑:这是一个可能的表结构的快速模拟。根据您需要的列和正确的命名约定使用您自己的判断:

CREATE  TABLE IF NOT EXISTS premium_access (
  id INT NOT NULL AUTO_INCREMENT ,
  user_id INT NOT NULL , --fk to USERS
  payment_id VARCHAR(45) NULL , --fk to PAYMENTS/INVOICES
  start_date TIMESTAMP NOT NULL ,
  end_date TIMESTAMP NOT NULL ,
  PRIMARY KEY (id) )