1

サーバーに送信される前に、ユーザーが自分の日付を入力できる可能性のある Web サイトを持っています。したがって、実際に使用する前に、提供されたものを解析して標準形式にする必要があることは明らかです。そこで、PHP のstrtotime()関数を使用しました。これは、入力として受け入れるものについてかなり寛容です。

しかし、私はサイトでdate.jsも使用しており、その parse() 関数もかなり優れています。サーバーに送信する前に、ユーザー入力でそれを使用する必要がありますか? どちらの方がよいですか?

安全のためにバックエンドに strtotime() を保持しますが、date.js の方が優れている場合は、それをクライアントに追加します。

(明確にするために、私は主にアメリカの日付形式を期待しています。しかし、それが変更された場合は、その移行を容易にするものが優先されます。)

4

2 に答える 2

2

ニーズを満たしていると感じている限りstrtotime()、クライアント側で変更する大きな理由はありません。ただし、strtotime()上にとどまる必要があるいくつかの仮定を行います。

strtotime()ドキュメントから:

m/d/y または dmy 形式の日付は、さまざまな構成要素間の区切り記号を調べることで明確になります。区切り記号がスラッシュ (/) の場合、アメリカの m/d/y が想定されます。一方、セパレータがダッシュ (-) またはドット (.) の場合は、ヨーロッパの dmy 形式が想定されます。

クライアントが選択した任意の形式で日付を送信できるようにしている場合、上記は混乱の原因になる可能性があります. date.js で 日付5/1/12をテストしたところ、どちらも 2012 年 5 月 1 日として解析されました。5-1-12

echo date("Y-M-n", strtotime("5/1/12"));
// 2012-May-5
echo date("Y-M-n", strtotime("5-1-12"));
// 2005-Jan-1 (whoops!)

ただし、日付を事前にフォーマットすることには、入力された日付が有効であることを保証する明らかな利点があります。また、バックエンドを保持strtotime()することで、リクエストを送信するために JavaScript 対応のクライアントが必要ないことも保証されます。クライアントが Web ブラウザでなくても、PHP を Web サービスなどとして呼び出すことができます。

于 2012-02-02T21:38:52.913 に答える
0

両方。

1 人以上のユーザーが Javascript を無効にしている可能性があるため、PHP で日付を検証する必要があります。

onblur入力コントロールに日付を入力し、それをハンドラーで検証し、検証した日付をコントロールに書き戻すことができるため、Javascript 検証は便利です。したがって、ユーザーが生年月日 2/5/01 を入力してコントロールを離れると、日付が 2001 年 5 月 2 日に変わり、ユーザーは日付が正しく解釈されていることを知るだけでなくstrtotime()、明確な値を取得します。

UX の観点から、より優れた検証フィードバックを使用することもできます。Javascript は次のことを実行できます (これはおそらくよく知られていますが、見つけるのに少し時間がかかりました)。次のように、ページに要素を配置します

<div id="DobReply"></div>;

次に、生年月日を検証する関数が実行できます

document.getElementById("DobReply").innerHTML = "Current age is "+age; 

age は、入力された生年月日と今日の日付から計算される変数です。ユーザーがコントロールを離れるとすぐに、計算された年齢がポップアップ表示されます。ユーザーが現在の年を入力した場合 (これは起こります)、すぐにエラーに気付く可能性があります。

したがって、datejs の検証も削除しません。しかし、Javascript が無効になっていると、これらすべてが失われ、無効な日付、奇妙な形式の日付などを取得できます。したがって、1 つしか持てない場合は、strtotime().

于 2013-08-17T13:40:35.273 に答える