Avatar billede asgerz.dk Nybegynder
29. februar 2004 - 14:32 Der er 6 kommentarer og
1 løsning

Fejl på validering af form

Jeg har lavet et lille tjek på en form... Og der er sådan set 2 problemer...

1. mine if sætninger virker kun på $tlf og postnr!!! Hvorfor?
2. strlen() virker slet ikke!

$navn = $_POST[navn];
$adresse = $_POST[adresse];
$postnr = $_POST[postnr];
$tlf = $_POST[tlf];

if($navn==null){
header("Location: crud.php?part=division&fejl=1");
}
if($adresse==null){
header("Location: crud.php?part=division&fejl=2");
}
if($postnr==null){
header("Location: crud.php?part=division&fejl=3");
}
if((strlen($postnr)<4)||(!is_numeric($postnr))){
header("Location: crud.php?part=division&fejl=4");
}
if($tlf==null){
header("Location: crud.php?part=division&fejl=5");
}
if((strlen($tlf)<8)||(!is_numeric($tlf))){
header("Location: crud.php?part=division&fejl=6");
}
Avatar billede Slettet bruger
29. februar 2004 - 14:40 #1
Prøv med empty():

if(empty($navn))
Avatar billede asgerz.dk Nybegynder
29. februar 2004 - 14:50 #2
Virker heller ikke!!!
Avatar billede Slettet bruger
29. februar 2004 - 14:55 #3
Hvordan virker ikke? Jeg har ikke haft problemer med den metode.

Kom med en beskrivelse af:
hvad der sker
hvad variablen indeholder
hvad du forventer, der skal ske.

(En læge kan jo heller ikke stille en diagnose, hvis patienten ikke vil sige andet end "Jeg er syg".)
Avatar billede asgerz.dk Nybegynder
29. februar 2004 - 15:02 #4
Jeg har en form, som ved submit kalder et script... i det script hiver jeg indholdet af de forskellige felter ud i variable som f.eks.
$navn = $_POST[navn];
Derefter tjekker jeg om der overhovedet er skrevet noget i feltet vha.
if($navn==null){
header("Location: crud.php?part=division&fejl=1");
}
hvis der ikke er det ville jeg jo så tro at jeg blev smidt til crud.php?part=division&fejl=1 med en variabel fejl der var = 1... men det sker ikke... scriptet fortsætter bare sin udførelse...

det mærkelige er at det virker når jeg tester på $tlf...

var det en bedre forklaring hr doktor??? ;-)
Avatar billede Slettet bruger
29. februar 2004 - 15:08 #5
Den sender først headers, når den er færdig, eller når der kommer normalt indhold.

Prøv at tilføje en exit(); til hver af dine if-blokke. Således:


if(empty(trim($navn))){
  header("Location: crud.php?part=division&fejl=1");
  exit();
}

Som bonus fik du lige en udvidelse af din if, så den heller ikke godtager et navn, der bare består af mellemrum.
Avatar billede asgerz.dk Nybegynder
29. februar 2004 - 15:16 #6
Oki... super... jamen så virker det jo...

Din trim blev ikke lige accepteret af en aller anden grund, men det klarer jeg et andet sted!!!

Har du også en forklaring på hvorfor strlen() ikke virker?
eller må jeg klare mig uden...

smid lige et svar! så du kan blive belønnet! ;-)
Avatar billede Slettet bruger
29. februar 2004 - 15:21 #7
Nej, jeg kan ikke umiddelbart se, hvorfor strlen ikke virker, men prøv at se på http://www.eksperten.dk/spm/470634 for en bedre måde at teste danske telefonnumre. Alle eksemplerne er skrevet, så de kan bruges med preg_match()
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