Вы не зашли.
Подскажите как подсчитать время онлайн проведенное пользователем на сайте!?
Отредактировано Logout (2009.08.10 01:01)
То, что подсчет идет через сессию - понимаю. Меня интересует как высчитать время, с помощью каких функций? Gemorroj, наведи небольшой пример!
с помощью функций плюс и минус))
ну записываеш в сессию текущий таймштамп, пользователь переходит на др страницу, ты берешь текущий таймштамп и вычитаешь из него тот записанный таймшамп. плучается время которое человек провел на сайте.
Нифига не понял. На сайте есть какой-нибудь скрипт который ведет подсчет этот?
нету. потому как этот скрипт занимает пару строчек кода.
Код:
session_start(); |
$time = time(); |
$_SESSION['timeOnline'] += $time - (isset($_SESSION['timestamp']) ? $_SESSION['timestamp'] : $time); |
$_SESSION['timestamp'] = $time; |
|
echo 'вы на саейте '.$_SESSION['timeOnline'].' секунд'; |
Gemorroj, благодарю. А как быть с "жизнью" сессии? Или он подсчитывает только время между переходами. Т. е. что будет если пользователь не разорвет сессию самостоятельно, будет ли ему начисляться время онлайн, до того как сессия разрушится сама?
А как это время еще по минутам и часам разбить?
Спс Геморой..!
Кое-как разобрался...
Вот если кому нада... Разбивка по секундам, минутам и часам...
Код:
span style="color: #0000BB"><?php$tm = date("H:i:s", $_SESSION['timeOnline'] - 10800);print $tm;?> |
Gemorroj, я вот сделал как тут все описано но у меня доходит до 23:59:59 и время в БД снова перезаписываеться на 00:00:00. Что делать, как подсчитывать много часов. например 145:34:15
тебе нужно записывать число секунд, а не время.
Gemorroj, я делаю вот так..
$online = time() - $db['online'];
mysql_query("UPDATE u_table SET online=online+$online,timeon=timeon+$online WHERE login='".$db['login']."'");
$db['online']; - в ней содержится последнее время
timeon - здесь времяя онлайн за весь период
А как число секунд записать, я все с помощью time() делаю
Добавлено спустя 4 минуты 14 секунд: И потом вывожу echo date("H:i:s",$db['timeon']);
Отредактировано Namik (2009.11.19 02:02)
тебе не нужно использовать date. разбивай полученные секунды вручную.
Пдскажите, пожалуйста, как это сделать..!?
Код:
span style="color: #0000BB"><?php$int = 86820;$tmp = array( 'days' => 0, 'hours' => 0, 'min' => 0,);$days = explode('.', $int / 86400);if ($days[0] >= 1) { $tmp['days'] = $days[0];}$hours = explode('.', ($int - ($tmp['days'] * 86400)) / 3600);if ($hours[0] >= 1) { $tmp['hours'] = $hours[0];}$min = explode('.', ($int - ($tmp['hours'] * 3600) - ($tmp['days'] * 86400)) / 60);if ($min[0] >= 1) { $tmp['min'] = $min[0];}print_r($tmp);?> |
Блин .. а куда мне подставлять мой $db['timeon']? чтобы просчитало?
Вот $hous = floor ($timevremja / 3600);
$mins = floor ($timevremja / 60) -$hous*60;
$secs = $timevremja % 60;
echo "Провел(а) на сайте: <br/>".$hous." ч. ".$mins." мин. ".$secs."сек.<br/>\n";
timevremja это строка где хранятся секунди
Добавлено спустя 1 минуту 3 секунды: Вот $hous = floor ($timevremja / 3600);
$mins = floor ($timevremja / 60) -$hous*60;
$secs = $timevremja % 60;
echo "Провел(а) на сайте: <br/>".$hous." ч. ".$mins." мин. ".$secs."сек.<br/>\n";
timevremja это строка где хранятся секунди