2012-05-25 20 views
0

我此腳本在我的網站頁面顯示當前日期和時間:如何保存在數據庫表中所顯示的當前時間

<script type = "text/javascript"> 

function startTime() { 
var now = new Date(); 
var h=now.getHours(); 
var min=now.getMinutes(); 
var s=now.getSeconds(); 
var ampm=(now.getHours()>11)?"PM":"AM"; 
var d=now.getDay(); 
var y=now.getFullYear(); 
var mon=now.getMonth(); 

var endings=["st","nd","rd","th"]; 
var dayendings=[0,1,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,0,2,3,4,4,4,4,4,4,1]; 
var days=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]; 
var months=["January","February","March","April", "May", "June","July","August","September", "October", "Novemeber","Decemeber"]; 
if (h>12) {h-=12} 
if (h==0) {h=12}; 
if (min<10) {min="0"+min} 
if (s<10) {s="0"+s} 

d=days[d+1]; 
mon=months[mon]; 
document.getElementById("time").innerHTML=d+" "+mon+" "+[now.getDate()-6]+", "+y+" "+h+":"+min+":"+s+" "+ampm; 
var tim = setTimeout("startTime()",1000); 
} 
</script> 

然後,我有一個textarea其中用戶必須輸入他或她的學生號碼。點擊提交按鈕後,當前的日期和時間應該保存在數據庫中。它實際上是在用戶的時間和時間之外。

如何正確地做到這一點?

+0

特別是如果這是一個官方網站(不只是一個博客或其他東西),你想捕獲服務器時間不是客戶端計算機的時間。否則,您將面臨在您的應用程序控制之外的各種欺詐和操縱的可能性。 –

回答

2

不信任客戶端時間值。絕對不能保證用戶的時鐘是準確的,或者不是故意錯誤設置的。

如果您需要登錄「當前時間」,然後使用類似

INSERT INTO yourtable (timefield) VALUES (now()) 
              ^^^^^ 

插入(據說)更可信時間戳。

+0

那麼,你的意思是我顯示當前日期和時間的代碼是錯誤的? –

+0

代碼沒有錯 - 但JavaScript依賴於瀏覽器當前運行的系統的日期時間設置。因此,如果有人意外地將自己的時鐘設置爲1.1.1970,那麼如果使用客戶端日期時間信息,則會將其插入到數據庫中。所以最好插入服務器的日期時間信息。 – acme

+0

這是您在頁面上顯示的客戶端時間,但是如果您想記錄時間,您希望在服務器上顯示時間,因爲這實際上對您和客戶端時間(javascript)可能是任何東西 –

0

我同意馬克。除了NOW()依賴於您的服務器的本地時間,而UTC_TIMESTAMP()將選擇獨特的UTC時間無關位置,因此時間偏移。

相關問題