2012-02-25 20 views
0

私は月と年の3つのドロップダウンボックスを持つ登録ページを持っています これらは数字形式で設定されています - (1-31)月(01-12)と年1993)。ユーザー入力からの文字列

タイムスタンプに問題があります。

が試み:。?

$day = $_POST['day']; 
$month = $_POST['month']; 
$year = $_POST['year']; 

$Dob = strtotime($month . " " . $day . " " . $year); 

しかし、その私に任意の出力を与えていない:(私は特別な方法で編成日月年を持っている必要があります

+1

出力が得られないとはどういう意味ですか?日付の解析に失敗した場合、常に少なくともfalse(PHPの古いバージョンでは-1)を返します。 – spencercw

+1

あなたは 'strtotime($ month。" - "。$ day"; "$ year);' – anubhava

+0

をデータベースに入れて、それを挿入しないでください:/ –

答えて

4

それはさておき

<?php 
if (empty($_POST['month']) || empty($_POST['day']) || empty($_POST['year'])) { 
    // handle invalid input, at least one of month, day, year wasn't given 
} else if (!checkdate($_POST['month'], $_POST['day'], $_POST['year'])) { 
    // handle invalid date, such as February 30th 
} else { 
    // convert to epoch (unix timestamp) 
    $time = mktime(0, 0, 0, $_POST['month'], $_POST['day'], $_POST['year']); 
} 

を試してみてください、日付入力のための3つの<select> sが非常に1998ishです。代わりに<input type="date">を使用してみませんか?これにより、ブラウザーは日付選択(ポンピング可能)をポップアップすることができます。

+0

ありがとうございます! :)は、日付入力を使用しようとしていたが、右のレイアウトを得ることができなかった:) –

1
$Dob = strtotime($day . "-" . $month . "-" . $year); 

注:

m/d/yまたはdmy形式の日付は、さまざまなコンポーネント間のセパレータを調べることによって明確になります。セパレータがスラッシュ(/)の場合は、アメリカのm/d/yが仮定されている。セパレータがダッシュ( - )またはドット(。)の場合は、ヨーロッパのd-m-y形式が使用されます。

http://php.net/manual/en/function.strtotime.php

1

2つのこと:
1)であっても、それは、ドロップダウンからで、データがユーザーの入力から安全であると思い込みません。 (int)は各項目を強制的に整数にします。この場合重要ではありませんが、データベースストレージが常にデータ入力をサニタイズすることは非常に重要になります。

2)間にスラッシュが必要です。 strtotimeは、マニュアルページに引用されたように、事前に定義された日付フォーマットタイプの一つに追従しなければならないThese Formats

$Dob = strtotime((int)$month . "/" . (int)$day . "/" . (int)$year); 
関連する問題