Потребители разглеждащи страница

tyrla4eto

Registered
Здравейте,
трябва ми код, който да изкарва лист с потребителите, които разглеждат дадена страница в момента. Някой може ли да помогне?
 
Каква система ползваш, записваш ли някъде действията на потребителите?
 
:D А автора ѝ ти ли си ?

и по-добре кажи , че имаш регистрационна форма и записваш потребителите в база данни , направи уточнения ...
 
Естествено, че записвам регистрациите в база дании.... Кажи ми как трябва да стане номера и какво се използва по-принцип, като таблици и т.н.
 
tyrla4eto каза:
Естествено, че записвам регистрациите в база дании.... Кажи ми как трябва да стане номера и какво се използва по-принцип, като таблици и т.н.
Ето как да стигнеш до решението:

1. Първо определи ясно целта си - да изкарва списък с онлайн потребителите
2. Изясни си какво означава един потребител да е онлайн - да е посетил сайта през последните 2 минути, примерно. За илюстрация - в web-tourist-а са 15
3. Определи какво означава един потребител да посети сайта - например да се зареди някоя от страниците index.php, profile.php, forum.php (колкото и които искаш)
3. Измисли място за записване на посещенията - БД е добър избор.
Значи ще е нужна таблица, в която да записваш кой потребител кога е посетил сайта и коя страница е била видяна.
4. Създай си таблицата. Колоните ще са нещо като
id int,
user int,
page int,
date timestamp
Защо user е int, а не varchar? Защото е по-добре да записваш само номера на потребителя, а не цялото му име.
Защо page е int, a не varchar? Ако искаш може и да е второто (по-лесен вариант), но най-добре всяка страница да има само номер.
5. Накрая остана във всяка страница да сложиш код, който записва посещението. Грубо написан ще изглежда така:

PHP:
if ($logged) {
$query = do_query('insert into views set user=:user, page=:page');
$query->bind_param([':user' => $username, ':page' => $page_number]);
$query->execute();
}

6. Остана само страницата за показване на посещенията. В нея просто правиш select за всичко до преди 2 минути. (не забравяй да ползваш group by user, за да не ти брои един потребител няколко пъти). С това предполагам сам ще се справиш :)
 
Не ме разбра правилно, искам да изведа кои потребители преглеждат дадена страница в момента, а не кои са онлайн.... Примерно логват се ivan, petar и ,asen; petar и asen влизат в страница home.php и там да изкара лист че petar и asen са в страницата в момента. Но да не показва ivan , тай като той е онлайн, но не е в страницата home.php
 
Таблица с полета userId, lastVisited, happenedAt.
При натискане на дадена страница да се прави прави проверка за съществуващ запис за потребител със същия userId, ако има да се ъпдейтва записа, ако няма да се създаде нов.
userId - id на потребителя,
lastVisited - id или име на текущата страница, ти ще си прецениш по какъв начин ще си направиш проверките,
happenedAt - timestamp, кога се е случило.

В самата страница, където искаш да изкараш листа на хората, търсиш за lastVisited да е текущата страница и happenedAt да е в близките Х минути - ти си прецени колко време без да сменя потребителя страницата ще се води активен.
Препоръчително е да напишеш код, който да се пуска на Х време (половин-един час) и да трие записи по-стари от времето, което си задал по-горе като критерии за да бъдеш активен, за да не се запълва базата данни с излишни записи.
 
tyrla4eto каза:
Не ме разбра правилно, искам да изведа кои потребители преглеждат дадена страница в момента, а не кои са онлайн.... Примерно логват се ivan, petar и ,asen; petar и asen влизат в страница home.php и там да изкара лист че petar и asen са в страницата в момента. Но да не показва ivan , тай като той е онлайн, но не е в страницата home.php
Е добре де, то е същото???

Само в select-a накрая ползваш
where page = 5
или
where page='home.php'

::o :idea:
 
tyrla4eto каза:
Не ме разбра правилно, искам да изведа кои потребители преглеждат дадена страница в момента, а не кои са онлайн.... Примерно логват се ivan, petar и ,asen; petar и asen влизат в страница home.php и там да изкара лист че petar и asen са в страницата в момента. Но да не показва ivan , тай като той е онлайн, но не е в страницата home.php
Колега, не сме гадатели за да знаем твоята система как е подредена. Съфорумците ти давът толкова добри насоки, че само трябва да седнеш и да си разгледаш системата какво ти предлага. Единственото над което повечето програмисти гадаят точно е буркан с ракия и мезе в чиния. Много е относително да ти говорим и изписваме хиляди редове, когато не схващаш най-простите обяснения като това на anonimen. Той ти даде ама абсолютно същата логика за това твое питане. Другите ти варянти са да използваш бисквитки, но при положение, че половината от кода ти вероятно е драснат вече само трябва да се сглоби картината в твоята система, няма смисъл да пишеш отделни класове или страници и така нататък. :)
 

Back
Горе