За последние 24 часа нас посетили 62388 программистов и 1742 робота. Сейчас ищут 924 программиста ...

делаю счётчик пользователей

Тема в разделе "PHP для новичков", создана пользователем Terminator004, 27 янв 2017.

  1. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Здравствуйте, сегодня решил сделать счётчик пользователей онлайн и сколько пользователей зарегистрировано на сайте. Мне удалось сделать счётчик сколько пользователей зарегистрировались на сайте и всё успешно написано в главном меню. И сделал счётчик пользователей онлайн, то-есть сколько пользователей на данный момент онлайн. Но код с онлайном, не такой, как я хочу, то-есть он показывает сколько всего пользователей присутствует на сайте. А я хочу, чтоб он показывал только тех пользователей онлайн, которые уже авторизованные. А те которые не авторизованные, тех не надо считать как онлайн. Так вот я не понимаю как это сделать. Вот какой код:
    PHP:
    1. <?php
    2. function GetUsersOnline(){
    3.     $SessionDir = session_save_path();
    4.     $Timeout = 60 * 3;
    5.     if ($Handler = scandir ($SessionDir)){
    6.         $count = count ($Handler);
    7.         $users = 0;
    8.      
    9.         for ($i = 2; $i < $count; $i++){
    10.             if (time() - fileatime ($SessionDir . '/' . $Handler[$i]) < $Timeout){
    11.                 $users++;
    12.             }
    13.         }
    14.                          
    15.         return $users;
    16.     } else {
    17.         return 'error';
    18.     }
    19. }
    20. echo 'Online: ' . GetUsersOnline();
     
  2. anderstender

    anderstender Новичок

    С нами с:
    15 ноя 2016
    Сообщения:
    55
    Симпатии:
    25
    пользователи хранятся в базе данных?
     
  3. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Да.
     
  4. anderstender

    anderstender Новичок

    С нами с:
    15 ноя 2016
    Сообщения:
    55
    Симпатии:
    25
    добавляешь в таблицу еще одно поле для времени и даты последней активности
    при обновлении страницы для текущего пользователя обновляешь это поле

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

    готовых php методов для этого нет.
     
    SamyRed нравится это.
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Можно сделать проще:
    Создай таблицу "online" со столбцами: "id", "login", "date".
    Когда пользователь заходит на сайт - скрипт проверяет, есть ли в таблице "online" пользователь, с авторизованным id.
    Если есть - проверяешь дату $tableDate + 300 > time (). Если больше - всё ок. Если меньше - изменяешь дату в таблице на time().
    Далее, если пользователя с таким id нет в таблице - заносишь запись. Здесь 300 - 5 минут - точность определения. Можно сделать 60, что равно одной минуте, а значит точность больше.

    Ну и из этой таблицы, естественно забирай пользователей, которые онлайн, а точнее их количество запросом "SELECT COUNT(*) FROM `online`"
    --- Добавлено ---
    А, да, забыл, нужно ещё удалять пользователей, активность которых была раньше чем 5 минут назад. Думаю, разберёшься (Если разберёшься с тем что выше)
     
  6. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    И это я должен сделать ?
    --- Добавлено ---
    как-то трудо это всё
     
  7. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну не делай если трудно. Элементарная логика, 1 оператор, 2 функции (образно)
     
  8. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Мне было бы лучше, если ты код напишешь. А с этого рассказа, я полно ошибок сделаю.
     
  9. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну так сделаешь ошибки - загуглишь что за ошибки, или сюда напишешь - объясню. Готовый код стоит денег. Конкретно я за этот код хочу 10$. Скинешь - напишу.
     
  10. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Как скидывать вообще ?
     
  11. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Давай не веб-мани. Кидать счёт?
     
  12. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    И что там на веб-мани делать ? Как вообще платить и чем ?
     
  13. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну не знаю. Можешь через терминал заплатить. Или в банке, или ещё как. На твоё усмотрение.
     
  14. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Какой банк ? Мне 16 только ! + надо карточку кредитную иметь! У меня ее нет. И терминалов нет.
     
  15. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Что значит нет терминалов? Они везде есть. Даже у моей бабушки в деревне есть в магазине.
     
  16. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Я тебе могу только спасибо на каждых письмах сделать
    --- Добавлено ---
    Я живу в Европе. Там нет в терминалах webmoney или киви кошельки + у нас другая валюта. Так что не выйдет.4 причины есть:
    1) Живу не в России.
    2) У нас нет webmoney
    3) Нет карточки у меня
    3) Валюта разная.
     
  17. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    1. Я тоже
    2. Веб-мани есть везде
    3. Карточка не нужна чтоб через терминал пополнять.
    4. Можешь мне на EUR-кошелёк скинуть.

    5. Я не заставляю. Не хочешь платить - делай сам. Я помогу с ошибками. + такой код есть в гугле. Причём не в количестве 1 шт.
     
  18. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Что значит не нужна ? Откуда тогда деньги взять ?
    --- Добавлено ---
    Ну крч я не смогу тебе скинуть и всё. Я хочу просто код. Тут же форму где помогать надо.
     
  19. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Тут форум именно где помогают,а не пишут все за тебя.А если не хочешь париться - пиши в раздел фриланс и будь готов вложить деньги
     
  20. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Не поверишь, но терминал это такая коробочка с электрической начинкой, куда надо купюра вставлять. Можно и с карточки, но не обязательно.
    --- Добавлено ---
    Дай заработать 10 баксов за 15 строк кода :D
     
  21. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Дай заработать 10 баксов за 15 строк кода :D[/QUOTE]
    У меня деняг нет. Можешь пожалуйста помочь ?
     
  22. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Могу. Какие были попытки сделать скрипт, кроме выпрашивания милостыни?
    --- Добавлено ---
    Давай свой код, свои ошибки, я помогу.
     
  23. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Я даже не знаю с чего начать
     
  24. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Я описал весь алгоритм. Начни с понимания что это всё значит.
     
  25. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Можешь написать хотя бы половинно кода, чтоб я понял что тут происходит.