Licznik osób online w programie

Licznik osób online w programie
AS
  • Rejestracja:około 11 lat
  • Ostatnio:około 4 lata
  • Postów:37
2

Witam
Chcę aby pokazywało mi informację na WWW ile osób ma aktualnie uruchomiony mój program napisany w delphi.
Jedyny jaki sposób przychodzi mi na myśl to taki, że jeżeli użytkownik uruchomi program w DELPHI, to wyśle on od razu informacje do serwera WWW poprzez synapse GETem z HWID komputera i będzie to robił co 5 minut, a skrypt w php to odbierze i będzie aktualizował w bazie danych.
Następnie będę wyświetlał informację z ostatnich 5 minut,ale jest to nieprecyzyjne rozwiązanie, ponieważ jak ktoś od razu wyłączy program,to od razu powinno być napisane , że jest off...a mimo to ciągle będzie online.

pozdrawiam i liczę na jakieś wskazówki,bo ja nie mam pomysłów.

edytowany 2x, ostatnio: Asphyxx
Pixello
  • Rejestracja:prawie 10 lat
  • Ostatnio:4 miesiące
  • Lokalizacja:Podkarpacie
  • Postów:448
1

To przy zamknięciu wysyłaj hwid ze zmienną np off

AS
  • Rejestracja:około 11 lat
  • Ostatnio:około 4 lata
  • Postów:37
0
Pixello napisał(a):

To przy zamknięciu wysyłaj hwid ze zmienną np off

Również o tym myślałem, ale jak komuś np wyłączy się komp? (zwiecha) - brak prądu?

Piszę tu, bo naprawdę chcę, żeby było precyzyjne, a może ktoś będzie znał lepszy sposób.

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
0

Ajax co pewien odcinek czasu tak czy owak odświeża status, np czy masz nowe PW.
Zliczasz ilość wykonanych zapytań ajax'a za ostatni pewien odcinek czasu.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:minuta
  • Postów:1595
0

Możesz też zamiast www i getów zrobić bazę danych i zliczać połączenia. Jak ktoś zamknie aplikację/komputer to teorytycznie lista połączeń się zmniejszy.

AS
  • Rejestracja:około 11 lat
  • Ostatnio:około 4 lata
  • Postów:37
0
woolfik napisał(a):

Możesz też zamiast www i getów zrobić bazę danych i zliczać połączenia. Jak ktoś zamknie aplikację/komputer to teorytycznie lista połączeń się zmniejszy.

Bazę danych i w programie żeby łączył się każdy użytkownik z nią? Tylko czy to nie jest niebiezpieczne trzymać dane w programie? ew. Jak mogę potem sprawdzić, kto jest połączony z bazą?

olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

Bazy danych ogarniam słabo. Ale jeśli serwer który ma trzymać dane pozwala na odpalanie czegoś opartego na socketach. To wlaśnie nie wiem prosty serwerek jak dla websocketów, bo chcesz mieć coś co ogarnia połączenie live, a nie wiem jak tutaj się sprawdzi ajax, ktorego praktycznie nie znam niestety, a websockety zrobiłem tylko krótkie rozpoznanie. Ale jeśłi po stronie serwera z bazą będzie coś po TCP z czym stale będzie połaczony program, to w przypadku nawet nagłego padnięcia komputera myslę, że szybko zerwie połączenie. Można to kontrolować. Jeśli kod obsługi zapytan do bazy będzie po stronie serwera i sam user nie będzie w stanie wykonywać polecen poprzez na przykład podszycie się pod zapytanie PHP i SQL injection, to będzie to bezpieczne. Samą obslugę bazy musi mieć raczej o ile się orientuje obsługujący podłączających się programem serwer, wląsnie by w kodzie nie było żywcem zapytan, bo ktoś złosłiwy postarać się może o zreversowanie treści zapytan do bazy w kodzie exeka programu, wieć może rozwalić bazę. Tylko jeśli chcesz być super dokładny i utemperować kombinacje, to trzeba jeszcze wymysleć coś, co utrudni zwykłe połączenie się komuś i oszukiwanie licznika.


Pozdrawiam.
woolfik
co do sql injeqtion to ja zawsze zakładam user_client na bazie i stacje klienckie mają dostęp do user_client, który może tylko zrobić select na widoku i execute na procedurach/funkcjach, reszta jest odebrana. Dzięki takiemu rozwiązaniu nawet gdybym gdzieś przeoczył w kleincie sqlinjection to privilages dla tego usera po stronie bazy załatwiają temat.
LA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 22 godziny
  • Postów:470
0

Nowe delphi z serii XE oraz Seatlle mają odpowiednie narzędzia do tego.... nie testowałem, ale jest gotowiec.

Jednak pewnie chcesz to zrobić ręcznie, zapomnij o pomyśle połączenia bezpośrednia aplikacji do bazy danych.

AS
  • Rejestracja:około 11 lat
  • Ostatnio:około 4 lata
  • Postów:37
0

To chyba najlepszym pomysłem będzie to o czym pomyślałem..

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Tuchów
  • Postów:12165
0

Dane z programu możesz wysyłać nawet częściej niż co 5 minut, dlatego że cała obsługa pojedynczego zgłoszenia raczej nie będzie trwała kilku minut; Dodatkowo, tak jak napisał @Pixello, przy zamykaniu aplikacji wyślij zgłoszenie;

Martwisz się co będzie, jeśli użytkownik nagle straci połączenie, a przecież po to cyklicznie sprawdzałbyś zgłoszenia, aby sesja rozłączonego awaryjnie programu nie wisiała w nieskończoność.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
flowCRANE
Ciekawe jak często sprawdzane są powiadomienia i wiadomości prywatne tu na forum;
WL
  • Rejestracja:około 21 lat
  • Ostatnio:około 2 miesiące
  • Postów:1082
0

Takie rzeczy często robi się za pomocą MQ (kolejka komunikatów) czyli tzw. publish/subscribe protocol; serwerów masz do tego od metra, np. RabbitMQ, ZeroMQ, HiveMQ, itd.
Jednym z najprostszych protokołów jest MQTT (ale mogą być inne np. STOMP), klientów dla PHP i Delphi jest od metra. Zresztą, o ile dobrze pamiętam, Facebook Messenger używa właśnie protokołu MQTT.
A dla Delphi jest klient i serwer w dwóch modułach ;-) https://github.com/pjde/delphi-mqtt
Ale czy znajdziesz brokera (serwer) napisany w czystym PHP - nie wiem.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)