Avatar billede moefelt Nybegynder
23. januar 2003 - 16:42 Der er 4 kommentarer og
1 løsning

spærring af dobblet åbning

Hey y'all

Jeg har lavet et større spørgeskema på et website, hvor man kan gemme en kladde af ansøgningsskemaet inden man sender det endeligt. Men som det er nu, kan man åbne skemaet fra flere computere på én gang efter det er gemt, hvorved ansøgere for alvor kan fucke deres ansøgning op.

Hvordan spærrer jeg skemaet efter det er gemt som kladde så kun én kan logge på af gangen til det.

// Moefelt
Avatar billede sthen Nybegynder
23. januar 2003 - 16:52 #1
Det må vel blive noget med, at DU tildeler brugerne en adgangskode for at kunne hente dokumentet. Derefter sørger du bare for, at adgangskoden kun kan anvendes én gang. (Sletter adgangskoden fra databasen)
Avatar billede sthen Nybegynder
23. januar 2003 - 16:57 #2
Rent skematisk (når du HAR tildelt kunden en adgangskode)

if ($adgangskode) {

kald databasen
slet adgangskoden
hent dokument

}
Avatar billede moefelt Nybegynder
23. januar 2003 - 18:34 #3
Det hjælper ikke helt at slette password - de skal jo også kunne hente det igen på et andet tidspunkt.

Og hvis de får lukket browseren uden at gemme igen går det hele tabt.
Avatar billede sylvesternielsen Nybegynder
26. januar 2003 - 16:57 #4
Det er ret kompliceret men prøv følgende...

Opret i din database noget somhedder fx. status..

Hvis den er angivet til fx. 1 lukker du adgangen og hvis den er 0 kan han komme ind..

Når han åbner den ændrer du så status og lukker han ændrer du status igen...

For at være sikker på at han kan komme ind igen ved en eventuel fejllukkning kan du angive et timestamp som hvis det er over tiden nu ændrer status til 0..

Her er et script som kan bruges hvis siden bliver lukket ved et uheld men vær opmærksom på at du skal sætte timout til uendeligt på den.. Det er så også en god idé at kører det i en skjult frame eller iframe..


<?
echo str_repeat(" ",300);
ignore_user_abort(true); //this way, the user can stop the output, but not the script.
while (true) {
        echo "test
\n";
        flush();
        sleep(2);
      if (connection_status()!=0){
                // kald din db
                // Ændrer status til 0
                die(); //kills the script
        }
}
?>
Avatar billede sylvesternielsen Nybegynder
26. januar 2003 - 16:59 #5
Du kan sætte hvor langt tid scriptet må køre med: set_time_limit(sek her);
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