Magnusha Skrevet 22. november 2012 Del Skrevet 22. november 2012 Drifter en side som fungerer helt greit. Men i det siste har jeg hatt problemer med et php-skjema. Jeg får plutselig tomme mail-skjemaer fra siden. Trodde folk bare trykket på "send skjema" knappen og la derfor inn en validering av hvert felt med javascript. Nå er det ikke mulig å sende inn et tomt skjema uten at du får et popup som sier hva du mangler. Men får fortsatt tomme skjemaer. Noen som vet hva som er problemet? Har følgende kode for å sjekke skjemaet og sende det. Javascript: function validateEmail() { var emailID = document.myForm.email.value; atpos = emailID.indexOf("@"); dotpos = emailID.lastIndexOf("."); if (atpos < 1 || ( dotpos - atpos < 2 )) { alert("Ser ut som om mailen din ikke er i et gyldig format") document.myForm.email.focus() ; return false; } return( true ); } function validate() { if( document.myForm.fornavn.value == "" ) { alert( "Ops! Du har ikke skrevet inn noe fornavn." ); document.myForm.fornavn.focus() ; return false; } if( document.myForm.etternavn.value == "" ) { alert( "Ops! Du har ikke skrevet inn noe etternavn." ); document.myForm.etternavn.focus() ; return false; } if( document.myForm.beskrivelse.value == "" ) { alert( "Har du ikke tenkt til å skrive noe til oss? Det er ikke registrert noe i feltet beskrivelse." ); document.myForm.beskrivelse.focus() ; return false; } if( document.myForm.email.value == "" ) { alert( "Du har ikke skrevet noen e-post" ); document.myForm.email.focus() ; return false; }else{ // Put extra check for data format var ret = validateEmail(); if( ret == false ) { return false; } } return true; } PHP: <!--Kontaktsskjema--> <div id="form"> <form name="myForm" action="kontakt.php" method="post" onsubmit="return(validate());" onreset="return confirm('Er du sikker på at du vil nullstille skjemaet?');"> <center><h1>Kontaktsskjema</h1></center> <div class="row"> <div class="label">Fornavn:</div> <!--end .label--> <div class="input"> <input type="text" name="fornavn" class="detail" /><em>*</em> <br /> </div><!--end .input--> </div><!--end.row--> <div class="row"> <div class="label">Etternavn:</div> <!--end .label--> <div class="input"> <input type="text" name="etternavn" class="detail" /><em>*</em> <br /> </div><!--end .input--> </div><!--end.row--> <div class="row"> <div class="label">Telefon:</div> <!--end .label--> <div class="input"> <input type="text" name="telephone" class="detail"/> <br /> </div><!--end .input--> </div><!--end.row--> <div class="row"> <div class="label">Epost:</div> <!--end .label--> <div class="input"> <input type="text" name="email" class="detail"/><em>*</em> <br /> </div><!--end .input--> </div><!--end.row--> <div class="row"> <div class="label">Beskrivelse:</div><!--end .label--> <div class="input"> <textarea rows="10" cols="50" name="beskrivelse" class="message"></textarea><em>*</em> </div><!--end .input--> </div><!--end .row--> <div class="submit"> <input type="submit" id="submit" name="submit" value="Send" /> <input type="reset" id="reset" value="Nullstill skjema"/> </div><!--end .submit--> </form> </div> Lenke til kommentar
EvenAug Skrevet 22. november 2012 Del Skrevet 22. november 2012 (endret) De kan skru av javascript i nettleseren og unngå valideringen Kan det være tilfellet? Når jeg lager validering av sånne forms pleier jeg å ha en fancy klientside validering og en server-side (php) validering som stopper de som bypasser javascript sjekken. Endret 22. november 2012 av EvenAug Lenke til kommentar
hjahre Skrevet 22. november 2012 Del Skrevet 22. november 2012 (endret) Kan det være at du har noen brukere som har skrudd av javascript og at valideringa dermed ikke funker? For å unngå dette er det nok lurt å gjøre validering på serversiden også, dvs i PHP-skriptet i kontakt.php. Hvis du bruker HTML5 kan du også sette required på de feltene som er obligatoriske. Det finnes til og med et eget email-felt. Eksempel på Email-felt med validering (uten JS) <input type="email" required /> EDIT: Ser EvenAug kom meg i forkjøpet EDIT2: Ser at du bruker == I JavaScript er det en fordel å bruke === fordi == ikke funker som man tror den funker. === er hvertfall helt bombesikker når du skal sammenligne verdier. Sjekk ut denne posten på StackOverflow Endret 22. november 2012 av hjahre Lenke til kommentar
Crowly Skrevet 23. november 2012 Del Skrevet 23. november 2012 Validering på klienten er ubrukelig for å unngå misbruk, er kun nyttig for å hjelpe "lovlydige" brukere til å fylle ut riktig. Du må alltid validere på serveren (i php o.l.), da det er null problem å sende sin egen informasjon til serveren uten å bruke ditt skjema/form. Lenke til kommentar
Magnusha Skrevet 26. november 2012 Forfatter Del Skrevet 26. november 2012 Takker for svar Er det php som er det beste å bruke mtp. validering på serversiden? Lenke til kommentar
etse Skrevet 26. november 2012 Del Skrevet 26. november 2012 Takker for svar Er det php som er det beste å bruke mtp. validering på serversiden? Det er ingen "beste" til det. PHP er et alternativ. Hva som er best er definert av mange variabler- Hvilke språk du har kjennskap til - Hvilke språk du ellers bruker på prosjektet - Hva som er eventuelt støttet på serverene du vil bruke o.s.v. Siden jeg ser du submitter formen til "kontakt.php" så regner jeg med du bruker PHP allerede, og da anbefaler jeg deg å bare forsette med det. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå