0

我有一个用户评论系统,其中使用存储在数据库中的 UTC 时间戳以及评论来显示评论时间。

时间偏移用于使用 javascript 发布请求设置会话 timeoffset 变量以获取用户本地时间。

我这样做是因为用户来自不同的时区,我无法将时间单独存储在一个时区中,所以我将其存储在 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
?>

时间偏移量.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 添加时间。您的帖子请求中的 alet 应该会给您正确的结果。

于 2013-08-26T09:57:17.897 回答