2017-06-16 94 views
1

據我所知,PHP只能在服務器端找到時間。我想要時間在客戶的時間。我的方法是使用Javascript,獲取客戶的時間,並將其傳遞給PHP。這有效,但我需要將這個「時間」存儲在log文件中。這是我到目前爲止的代碼:PHP中的客戶端時間

JS

var d = new Date(); 
document.getElementById("timestamp").value = d.getTime()/1000; 

PHP

$datevar = date('d/m/Y', $_POST['timestamp']) . ' at ' . date('h:i', $_POST['timestamp']) . PHP_EOL; 

$log_file_name = '1.log'; 
file_put_contents($log_file_name, $variable .": $variable, $variable, $datevar" , FILE_APPEND); 

HTML

<form name="contactform" method="post" action="survey.php"> 
<input type="hidden" id="timestamp" name="timestamp" value="" /> 
<input name="submit" type="submit" value="Submit"> 
</form> 

與上面的代碼,日誌文件只是顯示JS代碼,而不是實際的時間。

我想存儲實際的客戶端時間。任何幫助將不勝感激。先謝謝你。

+0

提交的提交UNIX時間戳轉換是什麼'$ _ POST [「戳」]'實際上看起來當你得到它在你的PHP是怎樣的? – WillardSolutions

+0

您是否等待在文檔存在之前運行腳本代碼? –

+0

在表單提交之前設置'timestamp'值。您可以設置頁面加載的時間(我的意思是腳本加載) – Zico

回答

0

您可以嘗試使用JavaScript代碼:

Math.round((new Date()).getTime()/1000); 

要獲得客戶端的Unix時間戳,然後到您的形式發送到存儲在文件中記錄。然後,您可以使用PHP的

strftime("%b, %d, %Y", TIMESTAMP) 

方法從客戶端

+0

謝謝,我會試試這個! – Sank6

+0

希望它有效! :) – Ken

+0

沒有,抱歉沒有出現在日誌文件中。我將'$ datevar'設置爲'strftime(「%b,%d,%Y」,TIMESTAMP)'並且放入'Math.round((new Date())。getTime()/ 1000)留下隱藏的輸入。 – Sank6