30. oktober 2006 - 11:47Der 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.
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"
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?
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?
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.
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]"); }
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..
Synes godt om
Ny brugerNybegynder
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.