코멘트와 함께 데이터베이스에 저장된 UTC 타임 스탬프를 사용하여 주석 시간이 표시되는 사용자 코멘트 시스템이 있습니다.세션 변수가 실시간으로 작동하지 않습니다.
시간 오프셋은 사용자 로컬 시간을 얻기 위해 javascript post 요청을 사용하여 세션 시간 오프셋 변수를 설정하는 데 사용됩니다.
사용자가 다른 시간대에 있기 때문에 시간을 저장할 수 없기 때문에이 작업을 수행 했으므로 시간대를 혼자서도 사용할 수 없으므로 UTC로 저장 한 다음 시간대의 timeoffset을 사용하여 표시했습니다.
이 시스템은 실시간으로 작동하지 않지만 새로 고침 후에 작동합니다.
comments.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 처음 timeoffset not set
표시하고 후는 의견과 시간을 보여줍니다 새로 고침
<?php session_save_path('session/store');
session_start();
if(isset($_POST['timeoffset'])){
$_SESSION['timeoffset'] = (int)$_POST['timeoffset'];
echo $_SESSION['timeoffset'];
}
?>
.
가능한 모든 방법을 참조하십시오.
감사합니다.
물론 설정되지 않았습니다. PHP는 응답이 사용자에게 전송되고 자바 스크립트가 실행되기 전에 실행됩니다. 세션을 식별하려고 시도한 후에 jQuery post를 사용하여 세션을 설정한다는 의미입니다. –
@IanBrindley 먼저 응답을 보내는 방법. 코멘트에서 시간의 일부를 새로 고치는 데 아약스 또는 jquery를 사용할 수 없습니다. 그 주위에 어떤 방법이 있나. –