2016-03-23 14 views
0

ユーザーが自分のサイトに登録しようとすると、十分古いものであることを確認する必要があります。私はgetdate()関数を使ってこれをしようとしています。getdate()を使用してユーザーの年齢を確認するにはどうすればよいですか?

私はgetdate()のことを理解していますが、この目的で正しく使用する方法を理解するのは苦労しています。

<?php 
$fn = $_POST["fullname"]; 
$un = $_POST["username"]; 
$pw = $_POST["password"]; 
$dob = $_POST["dayofbirth"]; 
$mob = $_POST["monthofbirth"]; 
$yob = $_POST["yearofbirth"]; 

$date = getdate(); 

if ($yob =$yob>= $date["year"]-16) 
{ 
    echo "Too young to register!"; 
} 
elseif ($yob <=1899) 
{ 
    echo "Don't be silly, you are not that old!"; 
} 
else 
{ 
    echo "<h1>Thank you for registering with us!</h1>"; 
    echo "<p> You have successfully registered with these details: 
      <br>Your full name :$fn<br> Username: $un 
      <br>Date of birth: $dob $mob $yob</p>"; 
} 
?> 
+3

曜日\をチェックしない限り、これは正確ではありません –

答えて

3

試してみてください。

$registration = new DateTime(implode('-', array($yob, $mob, $dob))); 
$now = new DateTime(); 

var_dump($now->diff($registration)->y); 

これは、あなたの実際の年齢を与える月、日を取り、考慮に閏年ます。

DateTime Class Manual

0

あなたはこのif ($yob =$yob>= $date["year"]-16)if ($yob >= $date["year"]-16)にを修正した場合、これはあなたにそれを期待している何だろうと、それは時間の一部に動作します。問題は、誰かの誕生日が現在の日付と比較して年にあるかどうかに応じて、このような年を単に差し引くだけで間違った結果が出ることが多いということです。

より良い方法は、DateTime::diffメソッドを使用して年齢を計算することです。これはあなたの人の正確な年齢を取得する必要があります。

$age = date_create("$yob-$mob-$dob")->diff(new DateTime()); 

その後は、年齢を確認するために、結果としてDateIntervalオブジェクトの年のプロパティを比較することができます。

if ($age->y < 16) { 
    echo "Too young to register!"; 
} elseif ($age->y > 117) { 
    echo "Don't be silly, you are not that old!"; 
} else { ... 
関連する問題