プロが教える店舗&オフィスのセキュリティ対策術

現在会員サイトをつくっているのですが、その会員に会員期限をつけようと思っています。
入会から1ヶ月、3ヶ月、6ヶ月、無期限
のようにいくつかの期限を選択できるようにするつもりなのですが、どのようにすれば一番スムーズな書き方なのかわかりません。
私の考え方としては

会員データーベースに入会日(更新日)例えば20050316として、1ヶ月更新の場合有効期限を20050416としてデーターベースに入れていく。
今日の日付が20050416になった瞬間に期限がきれるというようにする。こんな感じです。ただこの場合、年度がかわったりうるう年の計算などカレンダー的な計算は必要かとおもいますが・・・

こんな感じ以外にもっといい方法があればご教授ください。

A 回答 (2件)

あまりに、返信がないようなので、素人ですが。



$time = time();
$time には、1110888760等の日付を秒数化した値が
はいる。
タイムを取得して、1ヶ月なら、$timeで取得した時間
+60(秒)*60(分)*24(時間)*30(日)した値が、再度取得
した$timeより小さければ、期限切れで削除。って方法
もありますよ。
この場合は、日付計算が算術的にできるので便利です。
また、期限切れ当日じゃなくっても、それ以降のアクセス
でも、削除されるので。
一般的に閏年とかは考えないで、30日、60日、90日
と、日付で区切る方が簡単です。
月ごとでもPerlでもできなくはないですが、面倒だと
思うので。

Perlって閏年は、localtimeの中にはないみたいです
ねー。PHPなら、閏年の判定があるみたいなんですが。
さらにSQLだと、日付計算も楽なんですが。

とりあえず、localtimeから閏年計算をしているページを
載せておきます。

参考URL:http://www.7key.jp/hp/perl/ref_getyoubi.html
    • good
    • 0
この回答へのお礼

なるほど、昔なんかでtime関数で秒数で計算することが書いてあったのを思い出しました。
勉強になりました。
PHPは何かと便利な関数がありますよねーーー。

ありがとうございます。

お礼日時:2005/03/18 00:32

>>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を保存します
これで計算式に間違いが無ければ出来るはず・・・
    • good
    • 0
この回答へのお礼

完璧なまでの解答ありがとうございます。
これでしっくりきました。

お礼日時:2005/03/18 00:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!