0

コメントとともにデータベースに保存されている UTC タイムスタンプを使用してコメントの時間が表示されるユーザー コメント システムがあります。

タイム オフセットは、javascript ポスト リクエストを使用してセッションの timeoffset 変数を設定し、ユーザーの現地時間を取得するために使用されます。

ユーザーは異なるタイムゾーンから来ており、1つのタイムゾーンだけで時間を保存できないため、このようにしました。そのため、UTCで保存し、タイムゾーンのtimeoffsetを使用して表示しました。

このシステムはリアルタイムでは機能していませんが、更新後に機能しています。

コメント.php

<?php 
session_save_path('session/store');
session_start();
?>

<script type="text/javascript" src="jquery/jquery.js"></script>
<script type="text/javascript">
var timeoffset = new Date().getTimezoneOffset();

$.post('timeoffset.php', {timeoffset:timeoffset}, function(data){
    //alert(data);
});
</script>

<?php
if(isset($_SESSION['timeoffset'])&&!empty($_SESSION['timeoffset'])){
    date_default_timezone_set('UTC');
    $timeoffset = (int)$_SESSION['timeoffset'];
}
else{
    echo 'timeoffset not set';
    exit;
}

 // here are comments displayed using while loop
 // time of comments is displayed like this
 echo gmdate("F j, Y, h:i:s a", $row['timestamp']-($timeoffset*60)); //$row['timestamp'] = UTC time stamp stored in database. e.g: 1377509788
?>

timeoffset.php

<?php session_save_path('session/store');
session_start();

if(isset($_POST['timeoffset'])){
    $_SESSION['timeoffset'] = (int)$_POST['timeoffset'];
    echo $_SESSION['timeoffset'];
}
?>

最初に表示されtimeoffset not set、次に更新後にコメントと時間が表示されます。

これを行うための可能な方法を見て提案してください。

ありがとう。

4

1 に答える 1

0

PHP コードは、ユーザーがページを表示する前に実行されます。そのため、コードがクライアントのブラウザで実行される JavaScript コードの前または後にドキュメント内にあるかどうかは問題ではありません。そのため、javascript と ajax を介して時間を追加する必要もあります。投稿リクエストの警告により、正しい結果が得られるはずです。

于 2013-08-26T09:57:17.897 に答える