Avatar billede styrbaek Nybegynder
30. oktober 2006 - 11:47 Der er 10 kommentarer og
1 løsning

Åben side som skrivebeskyttet

Jeg er ved at lave et system med bl.a. kundekartotek, men hvordan kan jeg undgå at hvis flere brugere har det samme kundekort åbent, at de overskriver hinandens rettelser?

Enten skal et kundekort kun kunne åbent på en maskine(ikke optimal) eller også skal det bare ikke være muligt at gemme hvis kortet er åbnet på en anden computer.

Har selv tænkt på noget med logfiler, men problemet er at få dem slettet hvis en brugersession udløber.

Er der nogen der har et forslag??
Avatar billede well_r Nybegynder
30. oktober 2006 - 12:46 #1
sessions er nok svaret.
har du dine filer listet i en form for database?
Avatar billede well_r Nybegynder
30. oktober 2006 - 12:49 #2
Det drejer sig som du selv siger.. om at lukke folk én af gangen.. det du gør er at
-- her antager jeg at du bruger mysql og har en colonne til hver row som hedder åbnet--
sørge for at ændre denne fra 0 til 1 i det øjeblik den bliver åbnet. Hvis andre brugere åbner i mellemtiden vil de først lave en forespørgsel på det row og finde ud af at det ér åbnet. Herefter fjerner du bare muligheden for at gemme for dem.
Evt. med en priotetskø.. sørg for at den som kommer først får den.. og hvis han lukker uden ændringer, så vil næste mand i køen få "skriverettigheder"
Avatar billede styrbaek Nybegynder
30. oktober 2006 - 13:44 #3
Hvordan får jeg så ændre colonnen "åbent"  til 0, hvis brugeren f.eks. bare lukker sin browser eller hans session udløber?
Avatar billede zynzz Praktikant
30. oktober 2006 - 16:09 #4
Du kan evt, gemme en tid i databasen, hvis tiden udløber bliver han sat til offline, og dermed bliver "åbent" sat til "1"
Avatar billede well_r Nybegynder
30. oktober 2006 - 19:27 #5
hvis brugerens session udløber.. så udløber også hans åbne dokumenter..
Avatar billede styrbaek Nybegynder
30. oktober 2006 - 20:15 #6
Jeg er med på teorien, men er lidt i tvivl om hvordan jeg fører det ud i praksis. Kan jeg lave et script der opdatere databasen når en session udløber?
Avatar billede well_r Nybegynder
30. oktober 2006 - 20:19 #7
når en bruger kommer ind på din side.. så vil han få tildelt en SESSION..
denne session kan du få på session_id();
.. så laver du en tabel i mysql som hedder: user_sessions eller noget.. heri skriver du session navnet..og hvornår brugeren sidst har været online.. så alt efter hvor alng tid du vil give brugeren til at opdatere sine sessions..så kan du jo bare tjekke hver gang en sider bliver loadet..:
DELETE FROM user_sessions where tid>'$time+ekstratid'
hvor ekstratid er den tid som der skal gå før den sletter session.. i sekunder eller noget..
forstår du nu?
Avatar billede styrbaek Nybegynder
30. oktober 2006 - 22:01 #8
Den sessionid skal vel registreres på det row der skal "skrivebeskyttes" ellers er det vel hele databasen der er skrive beskyttet for andre brugere indtil sessionen afsluttes.
Avatar billede well_r Nybegynder
30. oktober 2006 - 22:23 #9
nej..se her:
lad din artikel db være sådan her:
id | titel | blah | åbnet
sæt åbnet til 0/null hvis ingen har åbnet filen og sæt den til SESSION_ID(); hvis den er åbnet.. på den måde kan du se hvem der har åbnet filen

lige før du kører DELETE FROM user_sessions where tid>'$time+ekstratid' kan du vel bare køre en:
$res = mysql_query("SELECT * FROM user_sessions where tid>'$time+ekstratid'");
while ($row = mysql_fetch_array($res)){
mysql_query("UPDATE artikler SET åbnet=null where åbnet=$row[session_id]");
mysql_query("DELETE FROM user_sessions where session_id=$row[session_id]");
}

forstår du nu?
Avatar billede styrbaek Nybegynder
30. oktober 2006 - 22:46 #10
Jeg er ved at være lidt træt, men jeg tror faktisk jeg har fattet det nu. Du får ihvertfald præmien, og tak for hjælpen
Avatar billede well_r Nybegynder
30. oktober 2006 - 23:36 #11
np.. sig til hvis du mangler noget mere hjælp ang det her..
men altså..betragt stadig det jeg har skrevet som et forslag... og overvej om det passer ind i dit eget system..
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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