Avatar billede azerty Juniormester
02. januar 2013 - 16:18 Der er 13 kommentarer og
1 løsning

Password Protection med mere

Godt nytår!

Dette script til password-protection fungerer fint:

---

<form name="keeper" action="java script:location.href = window.document.keeper.page.value + '.html'" style="margin:0;">
<div style="display:inline;">
<input type="password" name="page" SIZE="30" MAXLENGTH="30">
<input type="submit" value="OK">
</div></form>

--

Hvis brugeren klikker "OK" uden at skrive noget i tekstfeltet, vil scriptet lede efter ".html", altså en fil uden fornavn - og det kan man jo (?!) ikke lave.

Jeg gik på jagt på nettet og fandt dette, som undersøger, om der er klikket uden at skrive noget i tekstfeltet. Hvis der ikke er skrevet noget, kommer der en alert - og der bliver ikke submettet noget.

---

<html>
<head>
<script>
function validateForm()
{
var x=document.forms["myForm"]["fname"].value;
if (x==null || x=="")
  {
  alert("First name must be filled out");
  return false;
  }
}
</script>
</head>

<body>
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post">
First name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>
</body>

</html>

---

(fundet på http://www.w3schools.com/js/js_form_validation.asp)


Mit spørgsmål er: Er det muligt at kombinere de to scripts handlinger, sådan at jeg fortsat kan bruge det første script - med den tilføjelse, at hvis folk klikker uden at skrive noget, så får de en alert??

Jeg har selvfølgelig prøvet lidt frem og tilbage, men jeg er ingen ørn til det her, så måske er der én derude, der kan hjælpe.

På forhånd tak!
Avatar billede keysersoze Guru
02. januar 2013 - 16:26 #1
du har overvejet at sikkerheden i dit script er ikke-eksisterende right?
Avatar billede claes57 Ekspert
02. januar 2013 - 16:30 #2
åbent som en si - men:

<script>
function validateForm()
{
var x=document.forms["keeper"]["page"].value;
if (x==null || x=="")
  {
  alert("Adgangskode skal udfyldes");
  return false;
  }
}
</script>
  </head>
  <body>
  <form name="keeper" action="java script:location.href = window.document.keeper.page.value + '.html'" onsubmit="return validateForm()" method="post" style="margin:0;">
    <div style="display:inline;">
      <input type="password" name="page" SIZE="30" MAXLENGTH="30">
      <input type="submit" value="OK">
    </div>
  </form>
  </body>
Avatar billede azerty Juniormester
02. januar 2013 - 16:30 #3
Ja, det ved jeg godt.

Men alligevel vil jeg gerne finde ud af det :-)
Avatar billede azerty Juniormester
02. januar 2013 - 16:31 #4
Oh, det går hurtigt her :-)

Tak. Jeg kigger på det og vender fluks tilbage.
Avatar billede olebole Juniormester
02. januar 2013 - 16:32 #5
<ole>

Som øvelse/legetøj - men som sagt ikke til andet  =)

<script type="text/javascript">
function validateForm(elmFrm) {
    var val = elmFrm.page.value;
    if (val=="") {
        alert("Skriv dit kodeord.");
        elmFrm.page.focus();
    }
    else location.href = val + ".html";
    return false;
}
</script>

<form name="keeper" action="" onsubmit="return validateForm(this)" style="margin:0;">
<div style="display:inline;">
<input type="password" name="page" SIZE="30" MAXLENGTH="30">
<input type="submit" value="OK">
</div></form>

/mvh
</bole>
Avatar billede azerty Juniormester
02. januar 2013 - 16:49 #6
Tak claes57 og olebole

Begge eksempler virker (der skal vist ikke være mellemrum i "Javascript" i det første eksempel), så jeg vil give jer begge high-five og 30 point hver. Så.... skriv svar, please !

:-)
Avatar billede olebole Juniormester
02. januar 2013 - 16:52 #7
Ellers tak, jeg samler ikke point  =)

Mellemrummet er et, Eksperten sætter ind, når ordet javascript efterfølges af et kolon. Som du vil kunne se, findes det også i dit spørgsmål  =)
Avatar billede azerty Juniormester
02. januar 2013 - 17:15 #8
Nåh... det ser jeg nu :-)

Det er vel noget sikkerheds-noget.
Avatar billede claes57 Ekspert
02. januar 2013 - 17:19 #9
jeg lukker også gerne uden point...
Avatar billede gbjensen65 Nybegynder
02. januar 2013 - 18:03 #10
Du kunne også checke længden af det indtastede, og dermed sætte et krav til password kvalitet.

var password = document.getElementByName('page');
if (minLength(password, "Password er for kort", 5))
  return true;
else
  return false;

function minLength(elem, helperMsg, minL){
        if(elem.value.length < minL){
                alert(helperMsg);
                elem.focus(); // set the focus to this input
                return false;
        }
        return true;
}
Avatar billede olebole Juniormester
02. januar 2013 - 19:42 #11
Hvis password'et er korrekt, er det sikkert ikke for kort - og er det for kort, er det sikkert ikke rigtigt. Skal password'et ydermere kun være være på fem tegn, vil enhver noob under alle omstændigheder være 'logget ind' på ganske få sekunder  =)

PS: Min egen kode forskinker i bedste fald pågældende noob ca. halvandet sekund yderligere  *D
Avatar billede gbjensen65 Nybegynder
02. januar 2013 - 20:16 #12
5 var bare et eksempel.

Jeg vil aldrig selv lave en password validering i javascript. Det jeg tænkte på var at hvis en bruger af et site skulle oprette en profil og angive et password, så ville det jo være godt med en validering af f.eks. længden af passwordet og hvad der ellers måtte være af krav til password og andre data inden af form'en blev behandlet i f.eks. via ajaxkald til serveren.
Avatar billede olebole Juniormester
02. januar 2013 - 20:32 #13
Jeg tror, det må skyldes manglen på server scripting kundskaber, at spørger bruger JS  =)
Avatar billede azerty Juniormester
02. januar 2013 - 22:30 #14
Mit spørgsmål er besvaret (2 + 5). Jeg takker igen. Ingen vil have point, så...
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