Avatar billede kjeldsted Novice
23. februar 2008 - 21:17 Der er 14 kommentarer og
1 løsning

"Disable" refresh?

Hej.

Jeg ville lige hører blandt nogle eksperter om det på en måde vil være muligt at undgå at en bruger opdatere siden (fx ved at trykke på F5 i MSIE)?

Grunden til jeg ønsker dette er at jeg har et system hvor jeg forhindre flere brugere i at redigere i den samme række hentet fra en tabel (PHP og MySQL). Men hvis brugeren opdatere siden bliver han smidt vær og så må ingen rette i den pågældende række.

Så kort sagt. Jeg vil hindre min bruger i at opdatere siden.

Jeg håber mit spørgsmål er forståligt samt der er nogle der vil hjælpe.

På forhånd tak.
Avatar billede olebole Juniormester
23. februar 2008 - 21:31 #1
<ole>

Det kan man heldigvis ikke, men mon nu også det er nødvendigt? Hvis du knytter låsen til en bestemt bruger, må det kunne lade sig gøre at tjekke, om den bruger, der prøver at få mulighed for at redigere en tabel, er den samme, som har låst den. I så fald skal den vel bare låses op og låses igen  :)

/mvh
</bole>
Avatar billede leif Seniormester
23. februar 2008 - 21:31 #2
Dvs. du vil reelt også forhindre brugeren i at lukke vinduet, skrive en anden URL osv ?

Kig på http://www.web-source.net/html_window_unload.htm
Avatar billede olebole Juniormester
23. februar 2008 - 23:13 #3
leif >> den kode var en væsentlig årsag til fremkomsten af popup blokkere. Alle blokkere er pr. default sat op til at blokke popups - dog somregel undtaget popups, der åbnes på et brugerklik. Den dér vil næppe åbne hos ret mange snese brugere  ;o)
Avatar billede kjeldsted Novice
23. februar 2008 - 23:46 #4
leif--> Delvist, nej. Brugeren skal helst ikke kunne skrive en anden URL, men da det er et popup vindue man ikke må kunne opdatere vil man i nogle browsere ikke kunne ændre adressen. Og bruger skal også kunne lukke vinduet. Jeg har en onUnload komando der låser rækken op når man lukker vinduet.

olebole--> Desværre er det ikke sikkert nok med at låse op og låse igen. Har selv haft denne tanke. Men systemet skal bruges som en slags intranet og da man lat kan logge ind på 3-4 forskellige computere på en dag (der er sjældent folk på denne arbejdsplads trykke 'log ud' når de forlader en computer) vil én bruger kunne være logget ind på flere computere ad gangen. Og så vil det være for risikabelt, desværre.
Avatar billede kjeldsted Novice
23. februar 2008 - 23:49 #5
leif--> Nu fik jeg vist ikke læst godt nok på det link du sendte. Denne kode har jeg faktisk på min side. Men den bliver vist ikke aktiveret når man opdatere siden. I hvertfald ikke i MSIE7.0...
Avatar billede olebole Juniormester
23. februar 2008 - 23:59 #6
Prøv - og tag dig ikke af, jeg bruger et image-objekt:

window.onbeforeunload = function(){
    var o = new Image();
    o.src = "logout.asp?user=olebole";
}
Avatar billede olebole Juniormester
23. februar 2008 - 23:59 #7
- onbeforeunload virker i FF og IE
Avatar billede kjeldsted Novice
24. februar 2008 - 00:02 #8
Ved du om den også kan bruges på Mac/Safari?
Avatar billede olebole Juniormester
24. februar 2008 - 00:08 #9
Nej, prøv  :)
Avatar billede kjeldsted Novice
24. februar 2008 - 15:15 #10
Hm. Jeg er ikke så godt inde JavaScipt da jeg kun har arbejdet med dette i få uger. Men jeg kan ikke få ovenstående til at virke. Heller ikke i IE. Skal det stå præcis som du har skrevet eller skal det skrives om?
Avatar billede olebole Juniormester
24. februar 2008 - 15:43 #11
Det skal naturligvis ind i JS-tags, men ellers virker det, som det står. Prøv at lægge et link til siden
Avatar billede kjeldsted Novice
25. februar 2008 - 09:31 #12
Det er siden http://runja.dk/runningorder_vis.php?order=18 hvor problemer optræder. Hvis du så klikker på én af titlerne åbner der et nyt vindue. Opdatere man dette vindue bliver får man besked om at man ikke må redigere i dokumenete da der arbejdes på det. Men det er jo en selv der arbejder på det. Koden på sider er som følger:

<? require_once("Connections/remote.php"); session_start(); ?>
<?php
$id=$_GET['ret_id'];
if (isset($_SESSION['id'])) {
  $colname_rsBruger = (get_magic_quotes_gpc()) ? $_SESSION['id'] : addslashes($_SESSION['id']);
}
mysql_select_db($database_remote, $remote);
$query_rsBruger = sprintf("SELECT * FROM brugere WHERE id LIKE '%s'", $colname_rsBruger);
$rsBruger = mysql_query($query_rsBruger, $remote) or die(mysql_error());
$row_rsBruger = mysql_fetch_assoc($rsBruger);
$navn = $row_rsBruger['initialer'];
$result = mysql_query("SELECT * FROM spipspap WHERE id=$id");
while($row = mysql_fetch_array($result)){if($row['ret']=="true"){echo "
<script type=\"text/javascript\">
alert('Der arbejdes pt. på dette manus.\\nDu må vente med at redigere i dette indtil der ikke længere redigeres i det.');
var gem_ikke=1;
self.close();
</script>
";$gem_ikke=true;}}
mysql_query('UPDATE `spipspap` SET `ret` = \'true\', `ret_navn` = \''.$navn.'\' WHERE `spipspap`.`id` = '.$id.' LIMIT 1;');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
window.onbeforeunload = function(){
    var o = new Image();
    o.src = "edit_close.php?id=<?=$id?>";
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Ret i <?=$_GET['title']?></title>
</head>
<body>
<input type="button" onClick="window.close()" name="Submit" value="Gem">
</body>
</html>
Avatar billede olebole Juniormester
26. februar 2008 - 17:14 #13
For det første forstår jeg ikke, hvorfor du bruger 'LIKE' i din forespørgsel. Det eneste, jeg mener vil virke hensigtsmæssigt, er en forespørgsel på brugernavnet. I det hele taget kan jeg ikke rigtig få hoved eller hale i, hvad du vil med koden
Avatar billede kjeldsted Novice
20. marts 2008 - 12:15 #14
Jeg tror jeg finder en anden løsning
Avatar billede olebole Juniormester
20. marts 2008 - 16:13 #15
Ja, hvis ikke du vil forklare problemet, er det nok det eneste, der er at gøre  :)
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