31. august 2008 - 22:28Der er
17 kommentarer og 1 løsning
Validering af bruger input
Hej
Jeg har siddet lidt nu og spekuleret over hvorfor jeg altid får fejl når jeg laver en input validering
Jeg får en fejl med noget ala. Du skal skrive et kodeord
her er min kode som tjekker om det er udfyldt. og ja jeg har 4 dobbelt tjekket om det os står i formular felterne.
if($_POST['username'] =="") { $error1 = "Du skal skrive et brugernavn"; } elseif($_POST['password']) { $error2 = "Du skal skrive et kodeord!"; } elseif(isset($_POST['email_address'])) { $error3 = "Du skal skrive din email"; } elseif(isset($_POST['first_name'])) { $error4 = "Du skal skrive din navn"; } elseif(isset($_POST['last_name'])) { $error5 = "Du skal skrive dit efternavn!"; } else { if(strlen($_POST['password'] < 8)) { $error6 = "Dit kodeord skal mindst indholde 8 tegn!"; } else {
som dkfire er inde på, tjekker isset() om en variabel er sat. Du bør derfor kombinere den med f.eks. strlen() og ctype_VÆLG_EN Du kan se alle typerne her: http://dk.php.net/ctype Du kan evt. også bevæge dig ud i noget regexp, men så skal du jo lige have styr på det først. :o)
Og en helt anden ting, du bør sætte dig ned og lave en plan, over hvad de forskellige ting skal tjekkes for. For er det blot et spørgsmål om data er indtastet eller ej, er isset() nok.
Pt. er det bare et sprørgsmål om data blir indtastet. senere vil der komme en mere effektiv validering af bruger input. men jeg skal jo som du selv skriver lige have det her til at fungere først :)
if(empty($_POST['username'])){ $error1 = "Du skal skrive et brugernavn"; }elseif(empty($_POST['password'])){ $error2 = "Du skal skrive et kodeord!"; }elseif(empty($_POST['email_address'])){ $error3 = "Du skal skrive din email"; }elseif(empty($_POST['first_name'])){ $error4 = "Du skal skrive din navn"; }elseif(empty($_POST['last_name'])){ $error5 = "Du skal skrive dit efternavn!"; }else{ if(strlen($_POST['password'] < 8)){ $error6 = "Dit kodeord skal mindst indholde 8 tegn!"; }else{
Hvis jeg skal forblive gode venner med dkfire, så brug denne kode:
if(!isset($_POST['username']) && empty($_POST['username'])){ $error1 = "Du skal skrive et brugernavn"; }elseif(!isset($_POST['password']) && empty($_POST['password'])){ $error2 = "Du skal skrive et kodeord!"; }elseif(!isset($_POST['email_address']) && empty($_POST['email_address'])){ $error3 = "Du skal skrive din email"; }elseif(!isset($_POST['first_name']) && empty($_POST['first_name'])){ $error4 = "Du skal skrive din navn"; }elseif(!isset($_POST['last_name']) && empty($_POST['last_name'])){ $error5 = "Du skal skrive dit efternavn!"; }else{ if(strlen($_POST['password'] < 8)){ $error6 = "Dit kodeord skal mindst indholde 8 tegn!"; }else{
!isset($_POST['username']) && empty($_POST['username'] giver sandt kun hvis username ikke er sat og den er tom, men hvis den er sat men er tom vil det give falsk. ;-)
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.