2014-04-10 63 views
1

我有unix時間戳輸入值。我必須驗證輸入是否是正確的時間戳格式。目前我使用的是:codeigniter unix timestamp validate

$currenttime = $_POST['unixdate']; //input unix timestamp 

if($currenttime==strtotime(date('Y-m-d H:m:s',$currenttime))){ 
    echo "Correct"; 
} else { 
    echo "incorrect format"; 
} 

我用幾個測試用例來檢查這個,但是它的失敗。這是正確的還是有任何其他方式來檢查輸入是否是unix時間戳格式?

+0

嘗試'年月日的東西之間H:我:s' –

回答

0

您的驗證不正確,因爲你與你到哪兒去代替分鐘,月其他日期比較:

'Y-m-d H:m:s' 
^ ^

除此之外,這是相當無意義的驗證。一個Unix時間戳只不過是一個數字(如果你想嚴格的話一個整數)。這樣的事情應該已經足夠了:

$currenttime = filter_input(INT_POST, 'unixdate', FILTER_VALIDATE_INT); 
if($currenttime===false){ 
    // Invalid 
} 

你的方法是通過類似嘗試計算出生;-)

1

我戳記的日期確認的年齡只是一個代表,因爲經過的秒數的整數時代。所以,你能做的最好的驗證是一樣的東西

$currenttime = $_POST['unixdate']; //input unix timestamp 

if((int)$currenttime == $currenttime && is_numeric($currenttime)) { 

如果你知道你期待什麼日期,你可以檢查,看看是否時間戳落在兩個日期之類的

$startDate = '2014-10-04'; 
$endDate = '2013-10-04'; 

if((strtotime($currentDate) > strtotime($startDate)) && (strtotime($currentDate) < strtotime($endDate))) { 
    //Is valid 
}