Logout » 2009.08.10 01:19

Подскажите как подсчитать время онлайн проведенное пользователем на сайте!?

Gemorroj » 2009.08.10 01:54

врубаешь сессию и камон.

Logout » 2009.08.10 02:14

То, что подсчет идет через сессию - понимаю. Меня интересует как высчитать время, с помощью каких функций? Gemorroj, наведи небольшой пример!

Gemorroj » 2009.08.10 12:10

с помощью  функций плюс и минус))
ну записываеш в сессию текущий таймштамп, пользователь переходит на др страницу, ты берешь текущий таймштамп и вычитаешь из него тот записанный таймшамп. плучается время которое человек провел на сайте.

Logout » 2009.08.10 13:58

Нифига не понял. На сайте есть какой-нибудь скрипт который ведет подсчет этот?

Gemorroj » 2009.08.10 14:18

нету. потому как этот скрипт занимает пару строчек кода.

Код:

1
2
3
4
5
6
session_start();
$time = time();
$_SESSION['timeOnline'] += $time - (isset($_SESSION['timestamp']) ? $_SESSION['timestamp'] : $time);
$_SESSION['timestamp'] = $time;
 
echo 'вы на саейте '.$_SESSION['timeOnline'].' секунд';
Logout » 2009.08.10 15:04

Gemorroj, благодарю. А как быть с "жизнью" сессии? Или он подсчитывает только время между переходами. Т. е. что будет если пользователь не разорвет сессию самостоятельно, будет ли ему начисляться время онлайн, до того как сессия разрушится сама?

Gemorroj » 2009.08.10 15:14

естественно будет.

MarkUS » 2009.08.22 19:27

А как это время еще по минутам и часам разбить?

Gemorroj » 2009.08.22 21:52

http://ru.php.net/date

MarkUS » 2009.08.25 22:34

Спс Геморой..! :) Кое-как разобрался... :) Вот если кому нада... Разбивка по секундам, минутам и часам...

Код:

1
span style="color: #0000BB"><?php$tm = date("H:i:s", $_SESSION['timeOnline'] - 10800);print $tm;?>
Namik » 2009.11.18 23:48

Gemorroj, я вот сделал как тут все описано но у меня доходит до 23:59:59 и время в БД снова перезаписываеться на 00:00:00. Что делать, как подсчитывать много часов. например 145:34:15

Gemorroj » 2009.11.19 00:17

тебе нужно записывать число секунд, а не время.

Namik » 2009.11.19 02:29

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']);

Gemorroj » 2009.11.19 08:47

тебе не нужно использовать date. разбивай полученные секунды вручную.

Namik » 2009.11.19 17:45

Пдскажите, пожалуйста, как это сделать..!?

Gemorroj » 2009.11.19 19:05

Код:

1
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);?>
Namik » 2009.11.19 19:25

Блин .. а куда мне подставлять мой $db['timeon']? чтобы просчитало?

DarkDaNTe » 2009.11.19 20:15

$int = 86820; сюда

Vampisja » 2009.11.21 15:58

Вот $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 это строка где хранятся секунди