2011-05-18 24 views
0

我有一個註冊表單,我需要確認用戶年滿18週歲(用戶通過從3個下拉菜單中選擇值填寫出生日期,日,月, 年)。哪種做法最好? 我正在嘗試使用mktime並從當前日期減去出生日期,但無法正確顯示。PHP在註冊表格中比較日期

+4

請發表你到目前爲止的代碼。 – 2011-05-18 10:15:56

+0

什麼不工作?是減去給錯誤的年齡?你沒有從輸入中得到正確的日期嗎?你目前的日期錯了嗎?你需要明確什麼是不工作。 – paan 2011-05-18 10:21:55

回答

0
$datetime1 = new DateTime('2009-10-11'); 
$datetime2 = new DateTime('2009-10-13'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%y'); 

上面的代碼返回結果在幾年,您可以在一個條件循環歲月檢查,允許用戶註冊......

3

我會用DateTime,並遵循以下方針做一些事情:

<?php 
$year = (int) $_POST['year']; 
$month = (int) $_POST['month']; 
$day = (int) $_POST['day']; 

$now = new DateTime(); 
$dob = new DateTime("$year-$month-$day"); 

$age = (int) $now->diff($dob)->format("%y"); 

if ($age < 18) { 
    // Denied 
} 

使用日期通常是有問題的,由於邊緣情況,所以我覺得最好還是把它留給設計和開發的資料庫考慮邊緣案例的人。

+1

+1一個很好的答案。但是,請注意'DateTime-> diff()'方法僅適用於PHP5.3,所以如果您遇到5.2(或更糟!),則需要使用其他方法。 – Spudley 2011-05-18 10:25:55