ďťż
 
Problem ze zmianą wartości rekordu... (skomplikowane) ďťż
 
Problem ze zmianą wartości rekordu... (skomplikowane)
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Problem ze zmianą wartości rekordu... (skomplikowane)



Kamil Zeno - 24-12-2006 00:37
Problem ze zmianą wartości rekordu... (skomplikowane)
  Witam Państwa

Jest sobie aplikacja i baza w Postgresie. Jest tabela
'users' z polem 'zalogowany'. Jeżeli jakiś użytkownik
uruchomi program (wpisze swój login i hasło) to pole
'zalogowany' otrzymuje wartość 1. Przy zamykaniu
aplikacji wartość ta zmienia się na 0.
Pojawia się problem gdy w trakcie działania programu,
program zostanie "nielegalnie" wyłączony lub zabraknie
prądu. Wtedy wartość w bazie pozostaje '1', a chciałbym
żeby była '0'. Jak to zrobić? Baza jest w stanie wykryć
nagłe zerwanie połączenia i zmienię wartości na 0? Czy
może w programie coś trzeba pokombinować?
Ogolnie chodzi o zabezpieczenie przed uruchomieniem
kilku kopii programu przez tego samego usera. Gdy
user jest zalogowany to ma wartość '1' i gdy ktoś inny
próbuję się zalogować na jego konto to wyskakuje
komunikat, że logowanie jest zabronione.

Dzięki z gory. Pozdrawiam.





Jacek Czapla - 24-12-2006 00:37

  Kamil Zeno napisał(a):
> Witam Państwa
>
> Jest sobie aplikacja i baza w Postgresie. Jest tabela
> 'users' z polem 'zalogowany'. Jeżeli jakiś użytkownik
> uruchomi program (wpisze swój login i hasło) to pole
> 'zalogowany' otrzymuje wartość 1. Przy zamykaniu
> aplikacji wartość ta zmienia się na 0.
> Pojawia się problem gdy w trakcie działania programu,
> program zostanie "nielegalnie" wyłączony lub zabraknie
> prądu. Wtedy wartość w bazie pozostaje '1', a chciałbym
> żeby była '0'. Jak to zrobić? Baza jest w stanie wykryć
> nagłe zerwanie połączenia i zmienię wartości na 0? Czy
> może w programie coś trzeba pokombinować?
> Ogolnie chodzi o zabezpieczenie przed uruchomieniem
> kilku kopii programu przez tego samego usera. Gdy
> user jest zalogowany to ma wartość '1' i gdy ktoś inny
> próbuję się zalogować na jego konto to wyskakuje
> komunikat, że logowanie jest zabronione.
>
>
Hm...
Możesz napisać po co Ci taki potworek?
Może zrób coś w rodzaju wygasającej po kilku minutach sesji. Zapisuj
gdzieś godzinę ostatniej wykonanej przez usera operacji i sprawdzaj przy
logowaniu. Jeśli większa od np. 5 minut to zeruj 'zalogowany' i loguj
innego usera.

A jeśli chodzi o zabezpieczenie przed uruchomieniem kilku instancji to
można wyszukiwać uruchomionych procesów albo nazw okien ale to już OT.
Napisz na jakąś grupę o programowaniu i koniecznie napisz w czy to piszesz.

--
*Jacek Czapla* //usuń ".pułapka" z adresu email
www.ASIT.pl
http://www.busyonline.pl - Rezerwacja miejsc w busach




Kamil Zeno - 24-12-2006 00:37

  Użytkownik "Jacek Czapla" <jczapla.pulapka@asit.pl> napisał w wiadomości
news:elmfr9$dhm$1@news.onet.pl...
> Hm...
> Możesz napisać po co Ci taki potworek?

Chodzi o to, że sprzedaję aplikację klientowi z opcją dodania trzech
użytkowników (3 naraz może pracować na programie). I nie ma
możliwości, żeby zalogował się jakiś inny nowy użytkownik i żeby
dany użytkownik nie zalogował się dwa razy na ten sam login.

> Może zrób coś w rodzaju wygasającej po kilku minutach sesji. Zapisuj
> gdzieś godzinę ostatniej wykonanej przez usera operacji i sprawdzaj przy
> logowaniu. Jeśli większa od np. 5 minut to zeruj 'zalogowany' i loguj
> innego usera.
>

Jest to myśl. Przeanalizuję to rozwiązanie.

Kamil




Jacek Czapla - 24-12-2006 00:37

  Kamil Zeno napisał(a):
> Użytkownik "Jacek Czapla" <jczapla.pulapka@asit.pl> napisał w wiadomości
> news:elmfr9$dhm$1@news.onet.pl...
>> Hm...
>> Możesz napisać po co Ci taki potworek?
>
> Chodzi o to, że sprzedaję aplikację klientowi z opcją dodania trzech
> użytkowników (3 naraz może pracować na programie). I nie ma
> możliwości, żeby zalogował się jakiś inny nowy użytkownik i żeby
> dany użytkownik nie zalogował się dwa razy na ten sam login.

A nie możesz zabezpieczyć jakimś kluczem sprzętowym? Można znaleźć za
kilkadziesiąt zł.

--
*Jacek Czapla* //usuń ".pułapka" z adresu email
www.ASIT.pl
http://www.busyonline.pl - Rezerwacja miejsc w busach





Maciek Dobrzanski - 24-12-2006 00:37

  "Kamil Zeno" <niepodajetutajmaila@nic.pl> wrote in message
news:elmdil$i9g$1@atlantis.news.tpi.pl...

> Ogolnie chodzi o zabezpieczenie przed uruchomieniem
> kilku kopii programu przez tego samego usera. Gdy

Cóż, jeśli nie ma innego wyjścia (typu funkcji GET_LOCK()/RELEASE_LOCK() z
MySQL) to zawsze możesz w aplikacji oprogramować periodyczne (np. co minutę)
rejestrowanie w bazie aktywności, w postaci tabeli sesji (nazwa użytkownika,
identyfikator sesji, czas rejestracji). Wówczas by aplikacja mogła się
zalogować albo wiersz z daną nazwą użytkownika nie może istnieć, albo
identyfikator sesji (w postaci np. UUID) musi być zgodny z tym zapamiętanym
w aplikacji (w zasadzie jedynie w przypadku cyklicznego odświeżenia czasu
rejestracji), albo czas rejestracji musi być starszy od danej chwili o
zadany interwał (np. wspomnianą minutę). Przy wylogowywaniu oczywiście
wiersz danego użytkownika usuwasz.

Maciek




hubert depesz lubaczewski - 24-12-2006 00:37

  On 2006-12-12, Kamil Zeno <niepodajetutajmaila@nic.pl> wrote:
> Jest sobie aplikacja i baza w Postgresie. Jest tabela
> 'users' z polem 'zalogowany'. Jeżeli jakiś użytkownik
> uruchomi program (wpisze swój login i hasło) to pole
> 'zalogowany' otrzymuje wartość 1. Przy zamykaniu
> aplikacji wartość ta zmienia się na 0.

fatalny pomysł.
jak chcesz trzymać w bazie taką informację to użyj (fakt to dopiero w
8.2) advisory locków.
nie będziesz miał problemu z połączeniami.

depesz

--
http://www.depesz.com/ -> nowy, jeszcze lepszy, depesz




Krzysztof Raczkowski - 24-12-2006 00:37

  hubert depesz lubaczewski napisał(a):
> On 2006-12-12, Kamil Zeno <niepodajetutajmaila@nic.pl> wrote:
>> Jest sobie aplikacja i baza w Postgresie. Jest tabela
>> 'users' z polem 'zalogowany'. Jeżeli jakiś użytkownik
>> uruchomi program (wpisze swój login i hasło) to pole
>> 'zalogowany' otrzymuje wartość 1. Przy zamykaniu
>> aplikacji wartość ta zmienia się na 0.
>
> fatalny pomysł.
> jak chcesz trzymać w bazie taką informację to użyj (fakt to dopiero w
> 8.2) advisory locków.
> nie będziesz miał problemu z połączeniami.
>
> depesz
>

A czy przypadkiem we wcześniejszych wersjach problemu nie rozwiążą
user_locks z katalogu contrib ?? Może są sprzątane jak sesja zostanie
zerwana ... nie używałem jeszcze więc nie wiem :)

--
Pozdrowienia
K. Raczkowski




Paweł Matejski - 24-12-2006 00:37

  Kamil Zeno wrote:
> Witam Państwa
>
> Jest sobie aplikacja i baza w Postgresie. Jest tabela
> 'users' z polem 'zalogowany'. Jeżeli jakiś użytkownik
> uruchomi program (wpisze swój login i hasło) to pole
> 'zalogowany' otrzymuje wartość 1. Przy zamykaniu
> aplikacji wartość ta zmienia się na 0.
> Pojawia się problem gdy w trakcie działania programu,
> program zostanie "nielegalnie" wyłączony lub zabraknie
> prądu. Wtedy wartość w bazie pozostaje '1', a chciałbym
> żeby była '0'. Jak to zrobić? Baza jest w stanie wykryć
> nagłe zerwanie połączenia i zmienię wartości na 0? Czy
> może w programie coś trzeba pokombinować?
> Ogolnie chodzi o zabezpieczenie przed uruchomieniem
> kilku kopii programu przez tego samego usera. Gdy
> user jest zalogowany to ma wartość '1' i gdy ktoś inny
> próbuję się zalogować na jego konto to wyskakuje
> komunikat, że logowanie jest zabronione.
>
>
> Dzięki z gory. Pozdrawiam.

W widoku pg_stat_activity możesz zobaczyć kto jest zalogowany.

--
P.M.




hubert depesz lubaczewski - 24-12-2006 00:37

  On 2006-12-12, Krzysztof Raczkowski <raczkowk@poczta.wp.pl> wrote:
> A czy przypadkiem we wcześniejszych wersjach problemu nie rozwiążą
> user_locks z katalogu contrib ?? Może są sprzątane jak sesja zostanie
> zerwana ... nie używałem jeszcze więc nie wiem :)

nie wiem - nie bawiłem się. najprawdopodobniej rozwiążą.

depesz

--
http://www.depesz.com/ -> nowy, jeszcze lepszy, depesz




Kamil Zeno - 24-12-2006 00:37

  [ciacho]

Dzięki wszystkim za odpowiedź. Wypróbuję podane przez Was
rozwiązania i zobaczę, które będzie mi najlepiej pasować.

Pozdrawiam.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= mysql i mysql-front, problem String line; if (line=="cos"){...}....problem Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?= [postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?= [oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?= [PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ? [MySQL] Problem z zapisem danych w bazie danych Problem z mysql - can't connect to MySQL/nietypowo... plik corel 11 na corel 8 = problem z otwarciem
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lisinski.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com