2011-12-23 9 views
0

私は何らかのカウントダウンを作成しようとしています。私はこのコミュニティを作っています。私は30日間続くVIPのものを作りたいと思っています。30日間のカウントダウンの作成

このVIPを購入したユーザーは、現在の日付( 'd')を挿入します。データベースに転送します。

私は毎日-1しなければなりません。あなたはどうしますか?私はいくつかのmktime()で試しました。しかし、それは間違いなく私にとってはうまくいかないでしょう。

私はこのリンクを試しました:http://www.brighthub.com/internet/web-development/articles/9471.aspx、結果なし。

前方:-)に感謝

+0

もう少し具体的に教えてください。あなたはこれまでに何を試しましたか、あなたは正確に何を理解していませんか? –

+0

私は何をしなければならないか知っています。毎日00:00を過ぎると、すべてのユーザーが-1になるように、すべてのユーザーをVIPで更新する必要がありますか?または、これを行うにはよりスマートな方法がありますか? – skolind

答えて

3

ストアデータベース内の終了時間、およびnow < end timeかどうかを確認します。スケジュールに従って更新するフラグを持つことは避けてください。

+0

これはいつチェックしますか?ユーザーがログインしているか、何が起きていますか? – skolind

+0

"スケジュールに従って更新する必要があるフラグはありません。"これはどういう意味ですか? – skolind

+0

@Kolind - あなたはVIPのステータスを持っているかどうかを調べる気にはいつでもチェックします。 – Quentin

0

誰かがVIP権限を購入したときに完全なタイムスタンプを保存するだけです。その後、VIP_DURATION_IN_SECONDS - (time() - $vip_bought_time)を実行して残りの時間を得ることができます。これがゼロまたは負の値を返すとすぐに、VIPステータスは期限切れになります。

あなたはそれをチェックしても大したことではありません - 毎日/毎時/何でも、あるいは各ページの読み込み時にcronjobで実行できます。あなたはおそらくこの値をユーザテーブルに保存しているので、あなたはそれをすでに利用可能にしているので、小切手は超安価です。

1

現在の日付をtime()とすることができます。この関数は、1970年1月1日以降の秒数を返します。

開始日が保存されているため、終了日を計算するには、開始日に30 days * 24 hours/day * 60 minutes/hour * 60 seconds/minuteを追加するだけです。

VIPステータスがまだアクティブであるかどうかを確認するには、終了時刻が既に過去であるかどうかを比較できます。または - 現在のtime()と保存された時刻との差異を確認することで、残っている日数を調べることができます。

0

あなたのデータベースに有効期限のタイムスタンプを設定することができ、あなたのスクリプトで、あなたはちょうどこのような何か:

$expirationDate = *query it from databse*; 
$now = time(); 
if ($expirationDate > $now) 
{ 
    //grant access 
} 
else 
{ 
    //deny access 
} 
-2

は、あなたがこのようなcountdown scriptを探していてもよいです。

これを実装するには、documentationを使用してください。

1

お客様のサイトからVIPを購入し、DBで購入した日付を保存し、ページにVIPを表示する場合は、現在の日付で30日未満であることを確認してください。

$boughtDate = new DateTime("2011-11-20"); 
$currentDate = new DateTime("2011-12-23"); 

$interval = $boughtDate ->diff($currentDate); 
if (($interval->d) > 30) { 
    echo "VIP expired"; 
} 
関連する問題