2011-10-19 29 views
0

私は特定の時間に無効になるフォームを書こうとしています。しかし、人々は自分のコンピュータ上の日付を簡単に変更することができるので、私はApacheによって提供された日付を比較日として使用したいと考えていました。私はいくつかの簡単なものを試しましたが、SSIは日付をエコーし​​てもjavascriptの日付と比較しませんでした。私のコードは以下の通りです。何か案は?SSI日付とjavascriptの日付を比較する

var currenttime = '<!--#config timefmt="%a %b %d %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' 
var currenttime = currenttime+' GMT-0400 (EDT)'; 

var disableDate = new Date(); 
disableDate.setFullYear(2011,9,18); 
disableDate.setHours(17,0,0,0); 

if(disableDate < currenttime) 
    $('#date_field').attr("disabled", true); 
+0

これは、フォーム上の要素を無効にする適切な方法ではないことに注意してください。私はこれを理解していますが、私はJavaScriptを学ぶのも楽しく、どうやってこれを行うのかを考えたかったのです。 – Cloudkiller

答えて

1

文字列と日付を比較しています。

var currenttime = '<!--#config timefmt="%a %b %d %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" --> GMT-0400 (EDT)'; 
currenttime = new Date(currenttime); 

全くJavaScriptがあなたのためにそれを行うために取得するのではなく、フォームのサーバー側を無効にするconditional SSIを使用する代わりにしようと、言った:最初のDateオブジェクトにあなたのcurrenttime文字列を変換します。

+0

それは完全に機能しました。このフォームを一緒にハックする手助けをしてくれてありがとう。私はこれを行うためのよりよい方法があることを知っていますが、私は部分的にJavaScriptで遊びたいだけです。 – Cloudkiller

0

一般的に、その必要はありません。ロジックを無効にするためにJavaScriptを使用する場合は、ページをディスクに保存し、JavaScriptを分解して、今すぐまたは2年後にフォームを送信することを期待してください。

ここで注目すべきは、「このフォームを特定の時間に処理することを拒否するにはどうすればいいですか?」です。ご覧のとおり、質問はユーザの時計に依存しません。サーバー側に行ってください!

JavaScriptは、ユーザーの便宜のためにのみ使用してください。すべての「セキュリティ」ルールはサーバー側のルールです。

+0

Alf、私は人々がJavaScriptを混乱させることを知っている。すべてのフォーム提出物は、受領した時間とともにデータベースにタグ付けされているので、締め切り後に来るエントリーを捨てることができます。私はちょうど特定の時間の後にフォームの一部を無効にする迅速/汚い方法を探しています(私は私のオフィスにいないとき)ので、ユーザーの大多数は適切なフィールドを選択することができます。また、私はPHPに行き、多くの問題を解決しましたが、これらのフォームをCMSに組み込み、それらをPHPに変更すると、新しいワームの缶が開かれます。 – Cloudkiller