Avatar billede Slettet bruger
25. juli 2004 - 10:34 Der er 38 kommentarer og
1 løsning

Kontrol af funktion

Hej.

Jeg ved for lidt om det javascript, så jeg har lavet en formentlig forkert funktion, og jeg vil så bede en af jer om at omskrive den så det er korrekt syntax.

Den virker ikke, så derfor er jeg rimelig sikker på at den ikke er rigtig skrevet:

<script type="text/javascript">
function validateKode( kode ){
if substr(md5($email),2,5) == $kode {
return true;
} else {
window.open("Din kode er forkert","nytVindue","top=200,left=200,width=350,height=250,scrollbars=no");
return false;
}
</script>


og den kaldes med fra denne linie:

<input type="text" name="kode" onblur="validateKode(this.value);" value="<?php echo $_SESSION['kode']; ?>" size="50">

Det er ikke sikkert det er nok for at få det til at virke, men man må jo tage et skridt af gangen, når man ikke ved noget om det.

På forhånd tak.
Avatar billede erikjacobsen Ekspert
25. juli 2004 - 10:37 #1
Ja, det er ikke helt rigtigt, men jeg vil hellere spørge hvad det er du vil?
Du skal ikke begynde at kontrollere "loginkoder" eller hvad det er, i javascript.
Men en "vis kilde" kan man se alt. Gør det i PHP.
Avatar billede roenving Novice
25. juli 2004 - 10:39 #2
Hvor kommer md5 og $email fra ?-)

-- og erik har helt ret i at den slags validering er tåbeligt at lave med client-side javascript !-)
Avatar billede Slettet bruger
25. juli 2004 - 10:40 #3
ja, men det er nu ikke en vigtig kode. Det er kun en kontrol af at en email adresse virker. Koden sendes til postkassen på den email der skrives. Derefter kan man lige checke at det er den rigtige kode.

Udregningen laves i en php fil som så sender en mail med koden i.

Jeg ved ikke om det er forklarring nok.
Avatar billede roenving Novice
25. juli 2004 - 10:42 #4
Hvor har du md5 og $email fra ?-)
Avatar billede Slettet bruger
25. juli 2004 - 10:43 #5
Jeg har fået en løsning her:

http://www.eksperten.dk/spm/522109

Men det er to andre filer, hvor det virker. Men jeg skal bruge det i en anden formular, og der har jeg problemer med at få valideringen til at virke.
Og igen, det er ikke noget der har noget med sikkerhed at gøre. Kun en simpel kontrol af at postkassen virker, så bestillingsformularen sendes det rigtige sted hen :-)
Avatar billede Slettet bruger
25. juli 2004 - 10:45 #6
Her kaldes filen der udregner koden:
<input type="text" name="email" onblur="validateEmail(this.value);" value="<?php echo $_SESSION['email']; ?>" size="50">

og email er så lagt i $email fra $_SESSION['email'] - det "skulle" være godtnok, men jeg er selvfølgelig ikke helt sikker endnu.
Avatar billede roenving Novice
25. juli 2004 - 10:46 #7
Jeg kan ikke se at funktionen md5 er defineret nogle steder, og variablen $email er heller ikke defineret i det, du har vist, såeh ...
Avatar billede roenving Novice
25. juli 2004 - 10:47 #8
-- en php-variabel findes ikke for et javascript, så den skal defineres for sig (måske ved at hente værdien i email-feltet !-)

md5-funktionen er også en php-ting ?-)
Avatar billede Slettet bruger
25. juli 2004 - 10:51 #9
Ja det er php, og det er jo lige nøjagtig der det er galt. Det skal jo reagere når man har indtastet den sendte kode, og vil gå videre. Men jeg ved jo netop ikke hvordan man gør, og den funktion jeg havde lavet er for at vise hvad jeg vil, tror jeg nok :-) Men det er jo ikke sikkert i forstår det på samme måde som jeg gør.
Avatar billede roenving Novice
25. juli 2004 - 10:54 #10
Enten skal du smide koden direkte i html-filen, eller også skal du udføre checket server-side ...
Avatar billede Slettet bruger
25. juli 2004 - 10:55 #11
Altså: emailen er indtastet i linien før koden i formularen. Der kaldes så en fil der sender koden til den angivne email adresse.

Koden skal så indskrives i næste felt, og hvis koden er rigtig skal NÆSTE knappen i formularen blive aktiv, og man kan bestille. Er koden forkert skal der poppe et lille vindue op der fortæller at den er skrevet forkert.

Frem til at sende koden og medtage den, virker det. JEg kan bare ikke finde ud af at implementere valideringen som yellow gav mig i hans eksempler. Det er det jeg gerne vil opnå.
Avatar billede roenving Novice
25. juli 2004 - 10:59 #12
Selv den mest ligegyldige validering af den slags skal du udføre server-side ...

Alternativet er nemlig, at du i klartekst udfylder et felt (som godt kan være hidden, men det vil stadig kunne ses i Vis Kilde !-), og så tester op mod det ...
Avatar billede Slettet bruger
25. juli 2004 - 11:00 #13
Her kan I se det:

http://biograf.uups.dk/index.html

tryk på en by og vælg en film der ikke er gul

gå ned og skriv noget i lærers email og tryk TAB

Koden udskrives på skærmen lige nu. Jeg blev træt af at fise i mailboksen efter koden hvergang :-)

Men når koden så indskrives og man igen trykker TAB, så skal man kunne trykke på næste, hvos koden er skrevet rigtigt, ellers poppe vinduet op der fortæller at den er forkert skrevet.
Avatar billede Slettet bruger
25. juli 2004 - 11:10 #14
Skal det laves serverside, så må det vel være noget med at at kalde en .php fil som når email checkes. Men hvordan styrer man så om det er rigtigt eller forkert det der kommer tilbage derfra ? Jeg kan altså ikke overskue det.
Avatar billede roenving Novice
25. juli 2004 - 11:11 #15
Vi mangler jo stadig den værdi, der skal valideres imod, men noget i denne stil (og jeg ahr lagt dine scripts sammen, for det er bare overflødigt at skrive <script></script> hver gang !-)

<script type="text/javascript" language=javascript>
function blink() {
  document.form2.skole.focus()
}
function validateEmail( email ){
  window.open("SendKode.php?email="+email,"nytVindue","top=200,left=200,width=550,height=250,scrollbars=yes");
}
function validateKode(flt){
  if(flt.form.ValidatedKode.value == flt.value) {
  return true;
} else {
  window.open("Din kode er forkert","nytVindue","top=200,left=200,width=350,height=250,scrollbars=no");
  return false;
}
</script>


-- og:
    <tr valign="baseline">
      <td nowrap align="right">e-mail kode:</td>
      <input type="hidden" name="validatedKode">
      <td><input type="text" name="kode" onblur="validateKode(this);" value="" size="50">
      </td>
    </tr>
Avatar billede Slettet bruger
25. juli 2004 - 11:19 #16
Nu har jeg klippet det ind du har sendt her, og nu virker email check ikke. Der kommer ikke et vindue med koden, så den kalder åbenbart ikke filen.
Avatar billede Slettet bruger
25. juli 2004 - 11:26 #17
ved at lægge funktionerne ind i <script type="text/javascript" language=javascript> og slutte med </script> så virker popup skærmen her. Men der er nogle object fejl i nogle linier der ikke har noget med dette at gøre. Så det forstår jeg ikke.
Avatar billede Slettet bruger
25. juli 2004 - 11:33 #18
Nå der manglede en } :-)  men der er stadig et eller andet tosset.
Avatar billede Slettet bruger
25. juli 2004 - 11:35 #19
Nu brokker den sig over formfejl og at denne er 0: validatedKode

<input type="hidden" name="validatedKode">
Avatar billede Slettet bruger
25. juli 2004 - 11:37 #20
Den skriver:

Error: 'form.ValidatedKode.value' is nul or not an object
Avatar billede Slettet bruger
25. juli 2004 - 11:53 #21
Nå javascript ser også forskel på store og små bogstaver :-)

Så nu kommer dette når jeg har indtastet koden:

Object not found!
The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.
Avatar billede Slettet bruger
25. juli 2004 - 12:02 #22
Jeg synes ikke at kan se, at der er nogen URL den skal kalde der.
Avatar billede Slettet bruger
25. juli 2004 - 12:21 #23
Det er denne:

function validateKode(flt){
  if(flt.form.validatedKode.value == flt.value) {
  return true;
} else {
      window.open("Din kode er forkert","KodeVindue","top=200,left=200,width=350,height=250,scrollbars=no");
      return false;
      }
}

Den tror at "Din kode er forkert" er en link, så der skal åbenbart være en fil den kan kalde, men den skal jo ikke kaldes når koden er rigtig, så det fatter jeg ikke en pind af.

Den fejl skulle jo først komme når man skriver forkert.
Avatar billede Slettet bruger
25. juli 2004 - 12:35 #24
Jeg synes heller ikke at kunne finde ud af at koden passer sammen med den indtastede email ? Hvordan gør den det ?
Avatar billede Slettet bruger
26. juli 2004 - 07:45 #25
Nå, nu ser det ud til ( jeg er ikke helt sikker ) at dette virker:

function validateEmail( email ){
  mailtemp = hex_md5(email);
  mailkode = mailtemp.substr(2,5);
  window.open("SendKode.php?email="+email,"EmailVindue","top=200,left=200,width=550,height=250,scrollbars=yes");
}
function validateKode( kode ) {
  if (mailkode == kode) {
  return true;
  } else {
  document.write("Der er fejl i den indtastede kode");
  return false;
  }


Men knappen i bunden bliver ikke aktiveret som jeg forventede :) Kan jeg få et tips eller 2 til det ?

Det er ikke helt hensigtsmæssigt endnu, men når først det virker, så ved jeg jo når jeg laver noget forkert, og kan så bedre styre at lave om på det, tror jeg nok :)

Email check kaldes med denne linie:

<input type="text" name="email" onblur="validateEmail(this.value);" value="<?php echo $_SESSION['email']; ?>" size="50">

Og kodecheck kaldes med denne:

<input type="text" name="email" onblur="validateEmail(this.value);" value="<?php echo $_SESSION['email']; ?>" size="50">

Efter afsendelse af email lægges email over i en session variabel, så den huskes. Jeg er mere usikker på om de javascript funktioner kan huske variablerne. Kan man få den til det ? Li'som sessions i php ?
Avatar billede Slettet bruger
26. juli 2004 - 07:47 #26
Kode check skulle være denne linie:

<input type="text" name="kode" onblur="validateKode(this.value);" value="<?php echo $_SESSION['kode']; ?>" size="50">
Avatar billede Slettet bruger
26. juli 2004 - 08:46 #27
Det ser nu ud til at virke, lige bortset fra at få aktiveret NÆSTE submit knappen.

En der kan få mig på rette vej med det ?
Avatar billede Slettet bruger
27. juli 2004 - 07:38 #28
>>> roenving - Hvis du synes det er ok med 30 points for din ulejlighed, så læg et svar. Er du utilfreds med det, så brok dig :-)

Jeg kan ikke forstå at jeg ikke kan få det til at virke, når noget lignende virker i to andre filer. Men nu er det jo i min formular det skal virke i. Jeg prøver at lægge hele formularen ind herunder, hvor jeg gerne vil havedet til at virke. Og det er altså kun at få submit kanppen til at blive aktiv efter sammanligningen.

Et svar der virker på min formular, udløser så resten af de udlovede points. HEr er koden:

<form method="post" target="_top" name="form2" action="<?php echo $editFormAction; ?>">
  <table width="75%" align="center" border="1">
    <tr valign="baseline">
      <td nowrap align="right">Skolens navn:</td>
      <td><input type="text" name="skole" value="<?php echo $_SESSION['skole']; ?>" size="50">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Skolens adresse:</td>
      <td><input type="text" name="adresse" value="<?php echo $_SESSION['adresse']; ?>" size="50">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Lærers navn:</td>
      <td><input type="text" name="laerer" value="<?php echo $_SESSION['laerer']; ?>" size="50">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Klasse:</td>
      <td><input type="text" name="Klasse" value="<?php echo $_SESSION['Klasse']; ?>" size="50">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Antal deltagere ialt:</td>
      <td><input type="text" name="deltager" value="<?php echo $_SESSION['deltager']; ?>" size="50">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Skolens telf. nr.:</td>
      <td><input type="text" name="telf" value="<?php echo $_SESSION['telf']; ?>" size="50">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Lærers e-mail:</td>
      <td><input type="text" name="email" onblur="validateEmail(this.value);" value="<?php echo $_SESSION['email']; ?>" size="50">
      </td>
    </tr>
<tr valign="baseline">
      <td nowrap align="right">e-mail kode:</td>
      <td><input type="hidden" name="validatedKode">
          <input type="text" name="kode" onblur="validateKode(this.value);" value="<?php echo $_SESSION['kode']; ?>" size="50">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Filmen:</td>
      <td><input type="text" name="film" value="<?php echo $Film ?>" size="50" readonly>
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Biograf:</td>
      <td><input type="text" name="bio" value="<?php echo $Navn ?>" size="50" readonly>
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Dato og tid:</td>
      <td><input type="text" name="dato" value="<?php echo $Dag ?>&nbsp;&nbsp;den&nbsp;<?php echo $Dato ?>&nbsp;&nbsp;Klokken:  <?php echo $Tid ?>" size="50" readonly>
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Pris:</td>
      <td><input type="text" name="pris" value="10 kr. pr. styk" size="50" readonly>
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="center">&nbsp;</td>
      <td>     
      <input type="submit" name="btnSubmit" value="Næste >" disabled>
</td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form2">
</form>

Jeg har også forsøgt at rykke hele kodecheck delen ned til submit knappen,men det gav ingen ændring.

Jeg håber stadig på et svar så jegkan komme videre med det.
Avatar billede Slettet bruger
27. juli 2004 - 11:43 #29
Kan det virkelig slet ikke lade sig gøre, at få det til at virke ? Jeg synes jeg har prøvet alt muligt nu. Men åbenbart ikke det rigtige, hvis der findes en måde at gøre det på.
Avatar billede roenving Novice
27. juli 2004 - 11:52 #30
function validateKode( flt ) {
  if (mailkode == flt.value) {
    flt.form.btnSubmit.disabled = false;
    return true;
  } else {
    document.write("Der er fejl i den indtastede kode");
    return false;
  }
}

--og:

<input type="text" name="kode" onblur="validateKode(this);" value="<?php echo $_SESSION['kode']; ?>" size="50">
Avatar billede Slettet bruger
27. juli 2004 - 11:56 #31
Du er godtnok en knag :-) Nu ser det ud til at virke.

TUSIND TAK skal du have. Smid lige et svar.
Avatar billede roenving Novice
27. juli 2004 - 12:00 #32
Velbekomme '-)

-- men de 30 point er nok mere reelt for det stykke arbejde, jeg har leveret, så behold selv de fleste af de afsatte point !-)
Avatar billede Slettet bruger
27. juli 2004 - 12:02 #33
Nej du har fortjent dem :-) Jeg har søgt og rodet rundt siden jeg startede spørgsmålet, og for mig virkede det helt umuligt. Så bare lige fordu ved hvordan man gør, skal du alligevel have noget for at hjælpe.

Endnu engang tak.
Avatar billede roenving Novice
27. juli 2004 - 12:06 #34
-- ajmen, så siger jeg tak for point ;~}
Avatar billede Slettet bruger
27. juli 2004 - 18:46 #35
Kan man tilføje noget til den funktion, så den ikke aktiveres før der står noget i feltet. Som den er nu aktiveres den, og kommer med en fejl når man klikker på noget andet.F. eks. mailboksen for at hente koden. Det er jo ikke så godt.

Hvordan klarer man det ?
Avatar billede Slettet bruger
27. juli 2004 - 19:14 #36
Kandet passe at onChange lige er den jeg skal bruge. Hvis det er tilfældet så er denklaret :-)
Avatar billede Slettet bruger
28. juli 2004 - 10:39 #37
Til orientering.

Det lader til ikke at være smart at bruge onblur= hvis der er felter før og efter, da man kan gå videre uden at skrive noget. Ved at bruge onchange= istedet for slipper man for at den gør noget før der er skrevet noget i feltet.

Måske giver det så andre problemer, det ved jeg ikke, men indtil videre kører det.
Avatar billede roenving Novice
28. juli 2004 - 12:49 #38
Jeg bruger selv normalt onchange til den slags, men hvis du f.eks. kigger på http://roenving.users.whitehat.dk/index.html?/WD3Input.html, kan du også se, at det ikke er noget problem at checke onblur ...
Avatar billede Slettet bruger
28. juli 2004 - 12:59 #39
Ja, det kan jeg se. Men der er også mere kontrol på. Med onchange skulle jeg kun udskifte ordet :-)
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