Avatar billede 2c Nybegynder
10. oktober 2005 - 22:08 Der er 10 kommentarer og
1 løsning

onsubmit funktions kald

Hej,

Jeg har en gæstebog som der kommer utroligt meget spam i. Jeg vil gerne have, at når man submitter til den, så bliver man stillet et spørgsmål, og kun hvis der svares rigtigt submittes der.

F.eks. en input boks hvor der står: Skriv tallet syv i boxen herunder.

Hvis man svarer "7", kommer indlæget i gæstebogen.

Hvordan gøres dette ?

Og andre foreslag til at forhindre spam i min gæstebog er også velkommende.
Avatar billede softspot Forsker
10. oktober 2005 - 22:11 #1
Avatar billede roenving Novice
10. oktober 2005 - 23:57 #2
-- og hvis du f.eks. har gdlib eller aspimage til rådighed, kan du for hver udsendt formular generere et billede, som indeholder en kode, som du så gemmer server-side i en session og kontrollerer !-)
Avatar billede softspot Forsker
11. oktober 2005 - 00:02 #3
...så det afhænger af hvormeget energi (og økonomi) du vil putte i den løsning.
Avatar billede 2c Nybegynder
11. oktober 2005 - 21:49 #4
Hej,
Undskyld den lange svar tid fra mig.

Jeg vil helst ikke putte ret meget energi i det.

Det første link du viser ser ok ud. Jeg ville dog helst have hvis jeg bare kune validere klient side, så bliver teksten i gæstebogen jo også stående hvis man svarer forkert på spørgsmålet, og man kan prøve igen.

At sikkerheden så ikke er helt i top, betyder ikke så forfærdeligt meget, da det bare er til min personlige hjemmeside.

Hvis en kunne lægge et eksempel på hvordan det ville kunne lade sig gøre så ville det være perfekt.
Avatar billede softspot Forsker
11. oktober 2005 - 21:55 #5
Den løsning jeg ville henvise til var alternativet, dvs. en løsning som ikke er synlig for brugeren, men laver en indirekte submit, hvor der også kopieres en værdi fra et felt over i det andet, og det er så den værdi der skal checkes på ovre på serveren. Hvis der kommer en robot forbi som bare aktiverer submitknappen, vil den ikke få kopieret koden og serveren vil fange forskellen mellem de to felter og undlade at lægge data i databasen...

Den konkrete kode ligger på linket, så kig evt. en ekstra gang (i bunden af siden).
Avatar billede 2c Nybegynder
12. oktober 2005 - 22:59 #6
Jeg prøver nu at bruge den løsning. Jeg beklager jeg er lidt langsom.

Jeg får dog en fejl når jeg kalder funktionen: document.forms[0].submit();

Kalder jeg kun den funktion, og sletter linien før, får jeg også fejlen. Ved i hvad der kan være årsag til det. Min form starter sådan her:

<form method="post" action="signbook.php">

Siden er her: http://clauskc.dk/guestBook.php

I må gerne skrive i den, hvis i vil teste noget.
Avatar billede softspot Forsker
12. oktober 2005 - 23:21 #7
Du skal holde dig fra at kalde dine elementer submit, specielt hvis du har en form på din side. I dette tilfælde har du en knap der hedder submit, hvilket kommer i konflikt med kaldet til document.forms[0].submit(), idet kontroller kan refereres via deres navn direkte på form-elementet. Kontroller bliver så åbenbart indekseret inden funktioner og giver derfor en fejl.

Summa sumarum: omdøb den knap der hedder submit (altså name="submit"). Så tror jeg det fungerer bedre (eller giver en anden fejl)...
Avatar billede 2c Nybegynder
13. oktober 2005 - 18:03 #8
Ok,

Så fik jeg det eksempel implementeret, så er det bare spændene om det også virker.

Tak for hjælpen.

Smider du et svar softspot.
Avatar billede softspot Forsker
13. oktober 2005 - 18:13 #9
Velbekomme :)
Avatar billede softspot Forsker
13. oktober 2005 - 18:45 #10
Tak for point :)
Avatar billede 2c Nybegynder
13. oktober 2005 - 19:16 #11
Selv tak :-)
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