- ベストアンサー
Perlをつかって有効期限を設けたい
現在会員サイトをつくっているのですが、その会員に会員期限をつけようと思っています。 入会から1ヶ月、3ヶ月、6ヶ月、無期限 のようにいくつかの期限を選択できるようにするつもりなのですが、どのようにすれば一番スムーズな書き方なのかわかりません。 私の考え方としては 会員データーベースに入会日(更新日)例えば20050316として、1ヶ月更新の場合有効期限を20050416としてデーターベースに入れていく。 今日の日付が20050416になった瞬間に期限がきれるというようにする。こんな感じです。ただこの場合、年度がかわったりうるう年の計算などカレンダー的な計算は必要かとおもいますが・・・ こんな感じ以外にもっといい方法があればご教授ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
あまりに、返信がないようなので、素人ですが。 $time = time(); $time には、1110888760等の日付を秒数化した値が はいる。 タイムを取得して、1ヶ月なら、$timeで取得した時間 +60(秒)*60(分)*24(時間)*30(日)した値が、再度取得 した$timeより小さければ、期限切れで削除。って方法 もありますよ。 この場合は、日付計算が算術的にできるので便利です。 また、期限切れ当日じゃなくっても、それ以降のアクセス でも、削除されるので。 一般的に閏年とかは考えないで、30日、60日、90日 と、日付で区切る方が簡単です。 月ごとでもPerlでもできなくはないですが、面倒だと 思うので。 Perlって閏年は、localtimeの中にはないみたいです ねー。PHPなら、閏年の判定があるみたいなんですが。 さらにSQLだと、日付計算も楽なんですが。 とりあえず、localtimeから閏年計算をしているページを 載せておきます。
その他の回答 (1)
- Betamo
- ベストアンサー率41% (5/12)
>>1さんの方法とかぶってしまいますが、私もtimeですればいいと思います。 期限日数を$day_limitとして次のように計算します $time = time; $day_limit_time = $time + 60 * 60 * 24 * $day_limit; そして$day_limitをlimit_time.logにでも保存しておきます そして認証時に$day_limit(期限切れのtime値)を読み込みます 次に以下のように認証を行います $time = time; if($day_limit < $time){&error('期限が過ぎました');} これで期限切れはログイン不可になる(はず)です 次に、期限延長作業は $day_limit は読み込み済みと考えて次のようにします $limit_plus⇒延期日数 $plus = 60 * 60 * 24 * $limit_plus; $day_limit += $plus; これで$day_limitを保存します これで計算式に間違いが無ければ出来るはず・・・
お礼
完璧なまでの解答ありがとうございます。 これでしっくりきました。
お礼
なるほど、昔なんかでtime関数で秒数で計算することが書いてあったのを思い出しました。 勉強になりました。 PHPは何かと便利な関数がありますよねーーー。 ありがとうございます。