Gå til innhold

[Løst] Validering javascript med php skjema, får tomme mail.


Anbefalte innlegg

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
Videoannonse
Annonse

De kan skru av javascript i nettleseren og unngå valideringen :p 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 av EvenAug
Lenke til kommentar

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 av hjahre
Lenke til kommentar

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...