-2

私は現在、filehippo.comのようなファイルホスティングサイトを開発しています。私はそれで終わりです。しかし、私のクライアントは、rapidshareプロに似たプレミアムメンバーシップシステムを望んでいます。そのため、プレミアムメンバーのみが一定期間(1か月程度)にダウンロードアクセスを取得します。

私は今2つのテーブルを持っています:

  • ユーザー
  • ファイル

メンバーシップステータスの新しいテーブルを作成する必要がありますか?それを行うためのベストプラクティスは何ですか?ロジックとおそらくデータベース構造。アドバイスをお願いします。

どうもありがとう。

4

2 に答える 2

0

彼らがプレミアムメンバーシップの支払いをしている場合、私は別のテーブルを作成し、それを支払いのトランザクションIDに関連付けます。これは、1つのユーザー行から多くのpremium_access行になります。これにより、サービスの日数/月数に使用された支払いの履歴を記録し、6か月または年間のメンバーシップの割引を請求できるようになり、抜け穴やエクスプロイトを確実に追跡できるように正確に追跡できます。

次に、それらがいつ期限切れになるかを知りたい場合は、

select * frompremium_access where user_id ='$ id' limit 1 order 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) )
于 2013-02-12T22:30:57.020 に答える
0

ユーザーテーブルとファイルにいくつかの列を作成または追加したようです。

ユーザーテーブルで、列user_id、level_access、inactiveperiodを追加します。次に、ユーザーテーブルを接続するための列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;
}`
于 2013-02-12T21:02:57.980 に答える