Avatar billede topceres Nybegynder
11. marts 2008 - 08:27 Der er 14 kommentarer og
3 løsninger

Kan man checke, om en bruger er logget ind

Hejsa, jeg har egentlig ingen erfaring i C5 som sådan overhovedet, men jeg ville gerne kunne checke (programmere), om en given bruger er logget på C5 serveren. Er dette muligt?
Avatar billede leif Seniormester
11. marts 2008 - 08:33 #1
Når du siger C5 serveren ? Mener du så ind i C5 eller hvad ?

Inde i selve C5 har man i Generelt -> Kartotek -> Brugerstatus
Avatar billede hsund Juniormester
11. marts 2008 - 08:33 #2
Hej, Prøv at se under Generelt / Kartotek - Brugerstatus, måske dette kan bruges?

Hsund
Avatar billede jasman Nybegynder
11. marts 2008 - 08:33 #3
Prøv Generelt / Kartotek / Brugerstatus.
Avatar billede leif Seniormester
11. marts 2008 - 08:36 #4
Damn, 3 ens svar indenfor 1 minut, det må man da kalde service ! :-)
Avatar billede topceres Nybegynder
11. marts 2008 - 08:48 #5
Ja, det er imponerende - tak for svarene. Men jeg er ikke ude efter en manuel måde at checke det, det skal være automatisk; altså noget jeg kan checke fra et script (programmeringssprog er ikke afgørende, kan være forskelligt)
Avatar billede leif Seniormester
11. marts 2008 - 09:15 #6
Bruger i Native eller SQL ?
Avatar billede topceres Nybegynder
11. marts 2008 - 09:31 #7
SQL
Avatar billede jasman Nybegynder
11. marts 2008 - 09:50 #8
Opret en GLOBAL FNC med følgende kode:


FUNCTION ENUM NejJa UserLoggedIn(INT  &UserId)
#MACROLOAD(USER_GROUP_RIGHTS)
INT    &User
INT    &MaxFound
INT    &NewSes
INT    &LookforMax
INT    &RecNo
INT    &SesNum
STR 90  &UserInfo

#Loop(&User,1,#MaxUserCount)
    IF #SessionUser(&User) THEN
        SET &MaxFound = &User
    ENDIF
END

SET &LookforMax= &MaxFound+2
SET &NewSes = 0
WHILE &NewSes              <=    &LookforMax
    #Add(&NewSes,1)
    IF &UserId == STR2NUM(#SessionUser(&NewSes)) THEN
        RETURN 1
    ENDIF
END
RETURN 0


Så burde du kunne skrive:

IF userLoggedIn(Username2id("Hest")) THEN
    // Her inde er bruger HEST logget ind så gør et eller andet
ENDIF
Avatar billede jasman Nybegynder
11. marts 2008 - 09:50 #9
Det er et bud
Avatar billede mariaf Juniormester
11. marts 2008 - 18:49 #10
Jeg forstår spørgsmålet om du udefra kan checke om en given bruger er inde i C5? Det må man kunne, når du bruger SQL. Er en given bruge inde i SQL-databasen eller ej.

Der findes godt nok et sysinfokald i C5, men jeg ved ikke hvordan man tilgår det udefra.
Avatar billede jasman Nybegynder
12. marts 2008 - 22:27 #11
Ja ok.
Sådan læste jeg den ikke lige :).
Mit forslag gælder selvfølgelig kun c5's eget programmeringssprog.
Avatar billede topceres Nybegynder
13. marts 2008 - 07:50 #12
Gode bud, tak for svarene og hjælpen. Fordi det er C5's eget programmeringssprog må jeg videregive det til en kollega, men umiddelbart kan det nok bruges (dog ikke direkte, da det som mariaf bemærker, ikke kan tilgåes udefra). Derfor vil jeg også kigge på dit bud, mariaf, som jo vil være glimrende og mere simpelt hvis muligt.
Avatar billede jasman Nybegynder
13. marts 2008 - 08:42 #13
Hvis man er villig til at give lidt køb på sikkerheden, kan det godt kaldes udefra (tror jeg). Men det vil være langsomt, og resultatet (logget ind eller ej), skal returneres i en fil.

Men det er nok en ikke brugbar løsning så.
Avatar billede topceres Nybegynder
13. marts 2008 - 08:48 #14
Hmmm nej. Hvis det kan checkes direkte op mod SQL db'en, som mariaf foreslår, så er det nok den bedste løsning. Alternativt at bruge din funktion til at vedligeholde en tabel i sql databasen om folk er logget ind eller ej. Og så slå op i den udefra.
Avatar billede jasman Nybegynder
13. marts 2008 - 11:44 #15
Marias bud med et sysinfo-kald vil give samme problematik: at kalde c5 kode udefra.

M.h.t. at vedligeholde en tabel i databasen som holder styr på indloggede brugere, vil det desværre nok også give nogle problemer, m.h.t. c5-crashes eller andre uautoriserede nedlukninger af c5, hvor c5-koden ikke kan rydde op i tabellen.

Problemet er arkitektonisk det, at c5 er en to-tier løsning, hvor der ingen applikation-tier er, som kan holde styr på disse ting og rydde op, hvis forbindelsen til klienten forsvinder.

Der er kun klienten (som afvikler applikationskode) og database som besvarer SQL-forespørgsler og udfører opdateringer på foranledning af SQL-kode sendt af klienten. Og dermed er der kun klienten til at rydde op, og det kan den jo ikke hvis den crasher eller på anden måde afbrydes uautoriseret (kill af process f.eks.).

Så kunne man selvfølgelig lave noget kode (som evt. kører som en service), som sletter poster fra tabellen med indloggede brugere, hvis de har været logget ind længe f.eks. længere end et døgn.
Avatar billede topceres Nybegynder
13. marts 2008 - 11:51 #16
Yes, 100% holdbar løsning vil det nok aldrig være. Tankerne gik faktisk så på hver dag kl. X at sætte alle til at være logget af. Tættere på kommer man så nok ikke, desværre.
Avatar billede topceres Nybegynder
27. april 2008 - 18:07 #17
Til bl.a. jasman, hvis du overvåger denne tråd ... jeg opretter lige et nyt tillægsspørgsmål med titlen "Kan man checke, om en bruger er logget ind 2" ... hvis jeg kunne logge dig til at kigge der...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester