JESOD » 2010.04.08 00:03

Прошу помочь, подсказать логаритм хотябы, подсчёта и записи в базу например в таблицу `users`, ячейка `on_site`. Подскажите подробнее, буду очень благодарен. Я делал по-разному, и создавал для сессий отдельную таблицу, подсчитывал, но толком ничего не вышло. Хочется, как можно точнее всё подсчитывать. Пробовал с John cкатать логоритм, но не въехал.

Gemorroj » 2010.04.08 09:39

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

JESOD » 2010.04.08 11:52

Ооо..спасибо. А технически это можешь написать? Просто я с куками больше работаю. А читать мануал пытался, не нашёл что надо.

Gemorroj » 2010.04.08 12:26

это очень просто. реализуй сам.

JESOD » 2010.04.08 13:57

Gemorroj, Понимаю, может тебе просто, мне не очень. Помоги пожалуйста.

Gemorroj » 2010.04.08 14:40

Код:

1
span style="color: #0000BB"><?phpif (@$_SESSION['time'] && $_SESSION['time'] > $_SERVER['REQUEST_TIME'] - 300) { mysql_query('UPDATE users SET onlineTime = onlneTime + ' . $_SERVER['REQUEST_TIME'] - $_SESSION['time']);}$_SESSION['time'] = $_SERVER['REQUEST_TIME'];
JESOD » 2010.04.08 16:18

Подставил свои названия таблицы и что то не робит, сессию я так понимаю надо запустить?  Вверху кода твоего написал:
session_name('time');
session_start();
Извини что я такой бестолковый..просто не врубаюсь..

Gemorroj » 2010.04.08 17:34

JESOD написал:

что то не робит

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

JESOD » 2010.04.08 20:21

Не пишет в базу ничего, ходил по страницам сайта, и ничего не записывает. сколько провёл времени на сайте.

Gemorroj » 2010.04.08 20:57

отлавливай в каком месте работает не так как нужно.
проходит ли условие в if, корректно ли написан SQL запрос (само собой тебе ведь его нужнно адаптировать под свою БД)

JESOD » 2010.04.09 20:34

Короче не вышло так, намучался и забил на это дело. Сейчас сидел вечерком и наковырял Гг Кому-то может пригодится:

Код:

1
span style="color: #0000BB"><?php###################################### All rights reserved © 2010 ######## Gemorroj AND mod JESOD ########################################### Подсчёт времени, проведённого на сайте ##session_start(); //незнаю обязательно ли это, не стал заморачиватьсяif ($_SESSION['time'] && $_SESSION['time'] > $_SERVER['REQUEST_TIME'] - 300) {## записал в отдельную переменную это разницу, т.к. что то не шло как Gemorroj дал ##$raznica = $_SERVER['REQUEST_TIME'] - $_SESSION['time'];## ну тут уже запись в БД настроил ##mq('UPDATE `users` SET `time_online` = `time_online` + '.$raznica.' WHERE `id` = '.$user_id.' ');} ## Обязательно надо было убить время начала сессии, по другому не будет нормально работать ##unset ($_SESSION['time']);## и далее по кругу ##$_SESSION['time'] = $_SERVER['REQUEST_TIME']; ## Копирайт Гг вверху - это так, для протокола Ыы ##?>
Gemorroj » 2010.04.09 20:59

JESOD написал:

## Обязательно надо было убить время начала сессии, по другому не будет нормально работать ##

глупости, ты же эту переменную все равно ниже переопределяешь. И создавать переменную $raznica не нужно, т.к. ее резултат прямиком записывается в БД и нигде более не используется.

JESOD » 2010.04.09 22:45

Это ведь не цикл идет что должен быть круг и перезапись переменной. Всеравно значение time идет выше и надо глушить первое значение. Ради интереса сам попробуй.

AND » 2010.04.10 00:03

:lol:
http://www.php.su/learnphp/vars/

Gemorroj » 2010.04.10 00:05

JESOD, лучше не спорь, ага... Ты в ОДНУ область памяти (поэтому и названия переменных одинаковые) пишешь данные.

JESOD » 2010.04.10 12:49

Ладно. Но не шло реально.