Gå til innhold

Validering av kontrollfelt


Anbefalte innlegg

Jeg har laget en php-side med et skjema som postes videre til en annen php-side som validerer dataene. For å unngå spam, har jeg laget et "kontrollfelt", hvor brukeren skal skrive inn svaret på et regnestykke: 2+3. Brukeren skal altså skrive inn tallet 5, og hvis noe annet er skrevet inn vil jeg at alt skal stoppe opp!

I valideringsfila, har jeg satt opp følgende:

 

$Svarminne = $_POST['Svar'];

 

$feilmelding = "Beklager - Du har enten glemt å fylle ut svaret på regnestykket, eller du har svart feil!

<p>

<INPUT TYPE='button' VALUE='Gå tilbake' onClick='history.go(-1);'>";

 

if(!preg_match("/5/",$Svarminne))

{

echo $feilmelding;

exit();

}

 

 

Jeg vil at feilmeldingen skal komme opp hvis svaret er alt annet enn fem, men måten dette er satt opp på gjør vel at feilmeldingen kommer opp hvis tallet er 5, altså motsatt av det jeg ønsker.

 

Har prøvd å søke ganske mye på nettet etter løsning, men står fast. Kan noen fortelle meg hva jeg må gjøre for å få dette rett?

Lenke til kommentar
Videoannonse
Annonse

Koden din fungerer den :)

Alt annet enn 5 gir feilmelding.

 

<?php

$Svarminne = 4;

$feilmelding = "Beklager - Du har enten glemt å fylle ut svaret på regnestykket, eller du har svart feil!
<p>
<INPUT TYPE='button' VALUE='Gå tilbake' onClick='history.go(-1);'>";

if(!preg_match("/5/",$Svarminne))
{
echo $feilmelding;
exit();
}

?>

Lenke til kommentar

Jammen gjør den det :)

 

Men hvorfor er det slik at koden ovenfor sier at feltet MÅ inneholde 5, mens følgende kode sier at et felt IKKE må inneholde diverse spesialtegn??

 

if(preg_match("/[!#¤%&+<>]/",$Tittelminne))

{

echo $feilmelding;

exit();

}

 

Det er vanskelig å forstå dette med preg_match!!

Lenke til kommentar

Jammen gjør den det :)

 

Men hvorfor er det slik at koden ovenfor sier at feltet MÅ inneholde 5, mens følgende kode sier at et felt IKKE må inneholde diverse spesialtegn??

 

if(preg_match("/[!#¤%&+<>]/",$Tittelminne))

{

echo $feilmelding;

exit();

}

 

Det er vanskelig å forstå dette med preg_match!!

 

Ja, er vanskelig i begynnelsen.

Til eksempelet ditt er det ikke nødvendig med preg_match. Holder men en enkel if()-setning.

 

Preg match bruker du til å sjekke om en string inneholder kravene du setter i regex'en din, eller du kan søke etter ord i en string. :)

 

Eksempel på søk i string:

<?php
if(preg_match("/php/i", "hei i denne setningen er ordet php")) {
   echo "Fant ordet";
} else {
   echo "Fant ikke ordet";
}
?>

 

Eksempel på validering av tall:

<?php
if(preg_match('/^\d+$/', 'hhh')) {
  echo 'Stringen er et tall';
} else {
  echo 'Stringen er ikke et tall!';
}
?>

 

Her har du noen linker som forklarer mye mer nøye og bedre :)

http://www.phpro.org...-PHP-Regex.html

http://www.webcheats...expressions.php

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å
×
×
  • Opprett ny...