2017-08-22 12 views
2

私のウェブサイトには、イベントID、日付、金額を尋ねる簡単なフォームがあります。私は、ユーザーが入力した日付が将来10日以上であることを確認したいと思います。彼らのイベントが10日以内ならば、私のクライアントがオンラインで支払いをしたくないのです。情報を入力すると、銀行が提供した支払いを行うことができる安全なウェブサイトに誘導されます。PHP日付検証機能

提出時に、または日付が無効であることをユーザーに警告する修正されたオブジェクトプロパティを使用するjavascriptを介して日付をチェックする方法はありますか?

何か助けが素晴らしいだろう。ありがとう!リッチ

+1

答えは方法が常にある、 "yes" です。しかし、あなたにここでコードを書くように依頼するのは、本当にSOだけではありません。あなたが立ち往生したときには何かを試してみてください。 – billynoah

答えて

0

UNIX時間+ 10日でチェックします。 HTML5で

$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インタプリタを64bitに変更しますか? – Andreas

+0

代わりに 'Datetime'を使用しますか? – ctwheels

2

、引数として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

みんなありがとう!私はそれを試してみましょう –