Kom ihåg mig?
Home Menu

Menu


Bygger CMS och vill förhindra dubbelredigering

 
Ämnesverktyg Visningsalternativ
Gammal 2008-09-23, 15:56 #1
Undoredoos avatar
Undoredoo Undoredoo är inte uppkopplad
Medlem
 
Reg.datum: May 2008
Inlägg: 179
Undoredoo Undoredoo är inte uppkopplad
Medlem
Undoredoos avatar
 
Reg.datum: May 2008
Inlägg: 179
Sitter och bygger ett alldeles för ambitiöst CMS-verktyg (php/MySQL) och vill förhindra redigering av en sida som redan redigeras av en annan användare. Med tanke på min målgrupp så kommer det vara fantastiskt sällsynt att detta inträffar, men jag vill ändå bygga in den funktionaliteten.

Jag vill veta om jag är på rätt spår.

Jag tänker mig en tabell (innehållande, i det här fallet, pageId och userId) där det läggs in en post så fort en sida öppnas för redigering. Innan posten läggs in kollar jag om sidans ID redan finns i tabellen. Om den finns med, så meddelas att sidan är låst. Så långt borde det inte vara några problem.

Nästa steg är att rensa bort posten när sidan stängs. Här är jag lite osäker, men borde det inte fungera att använda sig av onUnload() och mellanlanda på ett script som tar bort posten? Eller är jag ute och cyklar?

Hur brukar ni andra göra?

Tack på förhand!
Undoredoo är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-09-23, 16:32 #2
Tarass avatar
Taras Taras är inte uppkopplad
Medlem
 
Reg.datum: Jan 2005
Inlägg: 135
Taras Taras är inte uppkopplad
Medlem
Tarass avatar
 
Reg.datum: Jan 2005
Inlägg: 135
Varför använda sig av JS när du ändå "måste" ta hand om $_POST-variablerna när användaren sparar sidan? Smidigast är förmodligen att rensa posten i samma veva som sidan sparas.

En annan sak du behöver fundera på är vad som händer om användaren stänger ner webbläsaren, blir då sidan låst för alltid?
Ett sätt att lösa det är att lägga in en tidsvariabel som löper ut efter en viss tid därefter låses sidan upp igen.
Ett annat sätt är att du skapar en funktion så att användaren kan forcera en upplåsning av sidan, men då är det samtidigt bra med information om när och av vem som sidan låstes.
Taras är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-09-23, 16:44 #3
Undoredoos avatar
Undoredoo Undoredoo är inte uppkopplad
Medlem
 
Reg.datum: May 2008
Inlägg: 179
Undoredoo Undoredoo är inte uppkopplad
Medlem
Undoredoos avatar
 
Reg.datum: May 2008
Inlägg: 179
Citat:
Ursprungligen postat av Taras
Varför använda sig av JS när du ändå måste ta hand om _POST-variablerna när användaren sparar sidan? Smidigast är förmodligen att rensa posten i samma veva som sidan sparas.

Fast man är kvar på sidan när man har sparat. Att rensa posten då skulle bli underligt, eftersom man i praktiken fortfarande redigerar. Däremot kommer jag även ha motsvarande "Spara och stäng" eller "Spara och visa" och då rensar jag såklart posten.

Citat:
Ursprungligen postat av Taras
En annan sak du behöver fundera på är vad som händer om användaren stänger ner webbläsaren, blir då sidan låst för alltid?
Nej, men det var då jag menade att onUnload() är en tänkbar lösning. Eller triggas inte unOnload-eventet i det fallet?


Forcering skulle kunna vara ett alternativ...
Undoredoo är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-09-23, 20:03 #4
Osiriss avatar
Osiris Osiris är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2006
Inlägg: 391
Osiris Osiris är inte uppkopplad
Flitig postare
Osiriss avatar
 
Reg.datum: Apr 2006
Inlägg: 391
Det är inte ovanligt med en versionshantering, där den som sparar sidan sist "vinner" och man bygger möjligheten att kunna växla eller slå samman ändringar.
Osiris är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-09-23, 20:04 #5
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Jag tycker inte du ska låsa sidan för redigering. Det är en onödigt komplex lösning som kommer ta mer tid att göra (än mitt förslag nedan). Speciellt med tanke på att det kommer vara extremt ovanligt.

Spar istället "senast redigerad"-tiden på sidan. När sidan sedan sparas kontrollerar du om tiden i databasen är samma som när du hämtade sidan för redigering. Om den är det talar du vänligt om för användaren att sidan sparats av någon annan och frågar om han/hon vill ha den senaste versionen och fortsätta editera.

Det blir en lösning som går fortare för dig att göra och den obekvämlighet som användaren utförs är minimal eftersom detta kommer ske ytterst sällan. Således den bästa lösningen i förhållande till kostnad.

Om det däremot är vanligt att användarna kommer ändra samma sida så är det bättre att låsa sidan. problemet med det är dock hur du ska städa bort låset om användaren tappar kontakt med servern (t.ex. genom att stänga browsern) innan han/hon stänger editeringsläget. Och det är inget kul problem att lösa. Så eftersom du inte behöver denna funktionalitet (just nu med det förmodade användningsmönstret) så ska du strunta i att ens försöka. Gå på den enklare lösningen!
eg0master är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-09-23, 20:29 #6
Undoredoos avatar
Undoredoo Undoredoo är inte uppkopplad
Medlem
 
Reg.datum: May 2008
Inlägg: 179
Undoredoo Undoredoo är inte uppkopplad
Medlem
Undoredoos avatar
 
Reg.datum: May 2008
Inlägg: 179
Citat:
Originally posted by eg0master@Sep 23 2008, 20:04

Spar istället senast redigerad-tiden på sidan. När sidan sedan sparas kontrollerar du om tiden i databasen är samma som när du hämtade sidan för redigering. Om den är det talar du vänligt om för användaren att sidan sparats av någon annan och frågar om han/hon vill ha den senaste versionen och fortsätta editera.
Ja, det låter nog trots allt som den bästa lösningen och den tar som sagt betydligt kortare tid att implementera. "Senast uppdaterad"-parametern finns ju så klart redan i databasen.

Fast jag antar att du menar "Om den inte är det talar du..."?

Tackar!
Undoredoo är inte uppkopplad   Svara med citatSvara med citat
Gammal 2008-09-24, 11:31 #7
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Citat:
Originally posted by Undoredoo@Sep 23 2008, 20:29
Fast jag antar att du menar "Om den inte är det talar du..."?
Ja
eg0master är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:29.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017