2017-08-22 76 views
2

我在我的網站上有一個簡單的表單,要求輸入事件ID,日期和金額。我想確保用戶輸入的日期在未來10天以上。如果他們的活動少於10天,我不希望我的客戶在網上支付款項。一旦他們輸入信息,他們就會被引導到一個安全的網站,在那裏他們可以進行我的銀行提供的支付。Php日期驗證功能

有沒有辦法來檢查提交日期或通過某種使用修改後的對象屬性,會提醒用戶該日期無效的JavaScript類型?

任何幫助將是驚人的。謝謝! Rich

+1

答案當然是 「有」,總有一種方式。但要求這裏的人爲你寫代碼並不是真正的目的。請自己嘗試一下,並在卡住時發佈代碼。 – billynoah

回答

0

在幾秒鐘內檢查UNIX時間+ 10天。

$date = "2017-09-05"; 

If(strtotime($date) > time()+(60*60*24*10)){ 
    Echo "ok"; 
} 
+0

[2038年問題](https://en.wikipedia.org/wiki/Year_2038_problem) – ctwheels

+0

@ctwheels你要我做什麼?更改PHP解釋器爲64位? – Andreas

+0

使用'Datetime'代替? – ctwheels

2

隨着HTML5,有一個爲日期輸入,這需要YYYY-MM-DD格式作爲參數min(和max)屬性。

<input type="date" min="2017-09-01" name="my_date" /> 

然後,您可以使用PHP生成未來10天的日子,並通過PHP設置該日期。

<?php 
$date = new DateTime("+10 days"); 
?> 
<input type="date" min="<?= $date->format("Y-m-d"); ?>" name="my_date" /> 

這就是說,這隻會是客戶端。它不允許用戶在日期選擇器中選擇今天和未來10天之間的任何天數。 但是,它有可能規避這種情況 - 只是因爲客戶端上的任何東西都可以被操縱。這就是爲什麼你應該總是做什麼來自客戶端的服務器端驗證。使用DateTime對象,您可以直接比較它們,如下所示。

<?php 
$date_input = new DateTime($_POST['my_date']); 
$date_limit = new DateTime("+10 days"); 
if ($date_input > $date_limit) { 
    // Valid date! It's not in the next 10 days 
} 
+1

偉大的解決方案!使用'Datetime'對象,所以它不會在不久的將來中斷! – ctwheels

+0

@ctwheels我正在寫這樣的答案:( – Mcsky

+0

謝謝大家!我會試試看 –