Avatar billede jesper-moeller Nybegynder
10. februar 2010 - 22:26 Der er 4 kommentarer og
2 løsninger

Chek form for tal / valider (tlf)numre

Jeg er temlig ny i php så bær venligst over med mig hvis mine spørgsmål virker lidt "dumme"

Jeg har lavet en form hvor jeg gerne vil checke om de intastede værdier er ok

for postnumer er jeg nået frem til følgende

        if (strlen($postno) != "") {
            if (is_numeric($postno)) {
                if (strlen($postno) != 4) {
                    $errorsourname = "inputerror";
                    $errormassage .= $sol."postnummer skal være 4 cifret.".$eol;
                    $error = true; }
                }
            else {
                    $errormassage .= $sol."postnummer kan kun være tal.".$eol;
                    $error = true; }
        }

Hvis der er noget indtaste skal det være tal, hvis der tal skal der være 4 af dem
(kommentare modtages gerne)

Nu vil jeg så gerne checke telefonnummer feltet og det volder mig problemer for et telefonnummer kan jo se ud på mange måder
12345678
12 34 56 78
1234 5678
+45 1234 56 78
osv osv

Hvordan chekker jeg at feltet indholder minst 8 cifre og ikke indholder andet en tal og mellemrum, og aceptere landekode +

(og ommuligt at det endelige resultat skrives som 12 34 56 78 (eller +45 12 34 56 78 hvis der er landekode)
Avatar billede hrole Mester
11. februar 2010 - 09:28 #1
Hej jesper-moeller

Prøv at se nærmere på funktionen preg_match, som helt klart kan anbefales til at validere brugerinput i forms. Med denne angiver du hvilke tegn og længden af dem som du accepterer. Funktionen er lidt pebret i starten, men der findes mange gode tutorials, og dit telefonnummereksempel vil være en god introduktion til emnet.
Du kunne fx sørge for at inputtet som valideres er af typen 12345678 eller +4512345678, altså uden mellemrum, brug fx funktionen str_replace.
Avatar billede wtd_nielsen Nybegynder
12. februar 2010 - 17:11 #2
nok ikke den mest effektive løsning..men lige til(synes jeg)


$length = strlen($input);
$isDigit = true;
if($length>7)
{
  if($input[0]!="+" || !is_integer($input[0]))
        $isDigit = false;
  for($i=1; $i<$length && $isDigit; $i++)
  {
        if(!is_integer($input[$i] || $input[$i]!=" ")
          $isDigit = false;
  }


}
else
{
  $isDigit = false;
}
Avatar billede jesper-moeller Nybegynder
15. februar 2010 - 04:15 #3
Hej hrole dit forslag bragte mig på rette vej

her er hvad jeg nåeder frem til

if (strlen($phone) != "" && !preg_match("/^\+*([\d\s]+)$/", $phone)) {
        $errorphone = "inputerror";
        $errormassage .= $sol."Telefon nummer kan kun bestå af tal<br />(evnt + for landekode)".$eol;
        $error = true; }

chekker at fletet kun består af tal og mellemrum og evnt + kun i starten :-)
Avatar billede jesper-moeller Nybegynder
15. februar 2010 - 04:26 #4
Hej wtd_nielsen

Jeg er ikke sikker på jeg helt forstå den du har lavet... men kan da se den tæller længden på indlæget
Leged med det og kom frem til følgende

$phonecheck2 = preg_replace("/[\D]/","",$phone);
if (strlen($phonecheck2) < 8) {
    $errorphone = "inputerror";
    $errormassage .= $sol."Telefon nummer skal være minst 8 cifret.".$eol;
    $error = true; }
Avatar billede jesper-moeller Nybegynder
22. februar 2010 - 07:18 #5
hrole
Du bragte mig på sporet, smid et svar hvis du vil have lidt point
Avatar billede hrole Mester
22. februar 2010 - 11:14 #6
svar :)
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