Avatar billede farhang Nybegynder
06. august 2006 - 20:54 Der er 21 kommentarer og
1 løsning

Validering af formular!

Hej,

Jeg sidder og arbejder med validering af en php-formular.

Jeg starter min php med følgende:

<?php
if(isset($_POST["E-mail"])) {
  $msg = "Fornavn:".$_POST["Fornavn"]."\nEfternavn:".$_POST["Efternavn"]."\nFirma:".$_POST["Firma"]."\nCVR/SE nr.:".$_POST["CVR"]."\nAdresse:".$_POST["Adresse"]."\nPostnr.:".$_POST["Postnr"]."\nBy:".$_POST["By"]."\nTelefon:".$_POST["Telefon"]."\nMobil:".$_POST["Mobil"]."\nFax:".$_POST["Fax"]."\nE-mail:".$_POST["E-mail"]."\nDomænenavn:".$_POST["Domainnavn"]."\nDomænetype:".$_POST["Domaintype"]."\nHar domænenavn:".$_POST["Hardomainnavn"]."\nHar domænetype:".$_POST["Hardomæne"]."\nMailhotel:".$_POST["Mailhotel"]."\nWebdesign:".$_POST["Webdesign"]."\nWebhotel:".$_POST["Webhotel"]."\nWebshop:".$_POST["Webshop"]."\nServiceaftale:".$_POST["Serviceaftale"]."\nTryksager:".$_POST["Tryksager"]."\nBesked:".$_POST["Besked"]."\nKontaktmetode1:".$_POST["Kontaktmetode1"]."\nKontaktmetode2:".$_POST["Kontaktmetode2"]."\nKontaktmetode3:".$_POST["Kontaktmetode3"]."\nNyhedsbrev:".$_POST["Nyhedsbrev"]."\nAccept af salgsbetingelser:".$_POST["Accepterersalgsbetingelser"];
  mail("mail@designunltd.dk", "Bestilling", $msg, "From: ".$_POST["Fornavn"]." ".$_POST["Efternavn"]." <".$_POST[E-mail].">");
  header("Location: index.php");
}
?>

I body har jeg skrevet min validering, som er følgende:

<?php
if (isset($_POST['E-mail']))
{
    if (empty($_POST['E-mail']))
    {
        echo "Du skal indtaste dit e-mail";
    if (empty($_POST['Postnr']))
    {
        echo "Du skal indtaste dit postnr.";
    }
    else //Ingen af felterne er tomme
    {
    echo "Emailen er nu sendt!";
    }
}
?>

også den tilhørende formular.

Men det virker ikke efter hensigten, er der en som kan hjælpe mig? Hvordan kan jeg lave betingelse til postnr. dvs. at feltet skal indeholde 4 tal?
Avatar billede farhang Nybegynder
06. august 2006 - 20:58 #1
Avatar billede iss Novice
06. august 2006 - 21:00 #2
Hvis du vil have et validt postnummer, så vil jeg anbefale du henter cvs filen fra Post Danmark og så læser filen ind og søger efter det vedkommende har skrevet.
Avatar billede farhang Nybegynder
06. august 2006 - 21:02 #3
Hvor findes cvs-filen?
Avatar billede farhang Nybegynder
06. august 2006 - 21:04 #4
Hej iss,

Kan du hjælpe med min validering?
Avatar billede iss Novice
06. august 2006 - 21:05 #5
http://postdanmark.dk/iis/postnumre/postnr.xls og den kan du så bare gemme i en tekst fil, eller lægge i SQL (det ville nok være nemmere, så kan du så hente by der fra.
Avatar billede iss Novice
06. august 2006 - 21:20 #6
Her har du den så i SQL:
http://molberg.eu/postnr.sql
Avatar billede farhang Nybegynder
06. august 2006 - 21:32 #7
Men hvordan skal jeg opbygge valideringen?
Avatar billede iss Novice
06. august 2006 - 21:54 #8
Du laver en select i databsen på postnummeret er der en række så er den valid.
db_connect;
$q = "SELECT `Bynavn` FROM `postnummere`WHERE `Postnr` = ".$_POST['Postnr'];
if (mysql_numrows($r = mysql_query($q)) == 0) $fejl .= "Ikke gyldigt postnummer<br>";
if (!preg_match("/[a-z]{6}[0-9]{2}[abcdehlmprst]{1}[0-9]{2}[a-z0-9]{5}/i", $_POST['E-mail'])) $fejl .= "Ikke gyldig email<br>";
Avatar billede farhang Nybegynder
06. august 2006 - 22:04 #9
Jeg har ikke erfaring med php, hvor skal jeg sætte din kode?
Avatar billede iss Novice
06. august 2006 - 22:23 #10
Istedet for if (isset($_POST['E-mail']))
{
    if (empty($_POST['E-mail']))
    {
        echo "Du skal indtaste dit e-mail";
    if (empty($_POST['Postnr']))
    {
        echo "Du skal indtaste dit postnr.";
    }
    else //Ingen af felterne er tomme
    {
    echo "Emailen er nu sendt!";
    }
}
?>

Og så skal du huske at lave en echo $fejl der hvor du vil have dine fejl udskrevet.
Avatar billede iss Novice
06. august 2006 - 22:26 #11
Og By:".$_POST["By"] kan du droppe helt, byen har du fra databasen. Som du kan hente ud med: $db = mysql_fetch_array($r, MYSQL_ASSOC); og så hedder den så $db['Bynavn'].
Avatar billede farhang Nybegynder
06. august 2006 - 22:48 #12
Skal jeg skrive <$fejl> eller hvad?
Avatar billede iss Novice
06. august 2006 - 22:55 #13
Nej, du skriver <? echo $fejl; ?>

Hvis du skal lære PHP, hvorfor så ikke starte med noget der er nemmere???
Avatar billede farhang Nybegynder
06. august 2006 - 23:03 #14
Du har ret, men jeg lære bedst på den hårde måde.
Avatar billede iss Novice
06. august 2006 - 23:06 #15
Du lære ikke noget af det hvis jeg skal skrive alt hvad du skal lave....
Avatar billede farhang Nybegynder
06. august 2006 - 23:18 #16
Hej iss,

Nu ser min kode i <head> sådan ud:

<?php
if(isset($_POST["E-mail"])) {
  $msg = "Fornavn:".$_POST["Fornavn"]."\nEfternavn:".$_POST["Efternavn"]."\nFirma:".$_POST["Firma"]."\nCVR/SE nr.:".$_POST["CVR"]."\nAdresse:".$_POST["Adresse"]."\nPostnr.:".$_POST["Postnr"]."\nBy:".$_POST["By"]."\nTelefon:".$_POST["Telefon"]."\nMobil:".$_POST["Mobil"]."\nFax:".$_POST["Fax"]."\nE-mail:".$_POST["E-mail"]."\nDomænenavn:".$_POST["Domainnavn"]."\nDomænetype:".$_POST["Domaintype"]."\nHar domænenavn:".$_POST["Hardomainnavn"]."\nHar domænetype:".$_POST["Hardomæne"]."\nMailhotel:".$_POST["Mailhotel"]."\nWebdesign:".$_POST["Webdesign"]."\nWebhotel:".$_POST["Webhotel"]."\nWebshop:".$_POST["Webshop"]."\nServiceaftale:".$_POST["Serviceaftale"]."\nTryksager:".$_POST["Tryksager"]."\nBesked:".$_POST["Besked"]."\nKontaktmetode1:".$_POST["Kontaktmetode1"]."\nKontaktmetode2:".$_POST["Kontaktmetode2"]."\nKontaktmetode3:".$_POST["Kontaktmetode3"]."\nNyhedsbrev:".$_POST["Nyhedsbrev"]."\nAccept af salgsbetingelser:".$_POST["Accepterersalgsbetingelser"];
  mail("mail@designunltd.dk", "Bestilling", $msg, "From: ".$_POST["Fornavn"]." ".$_POST["Efternavn"]." <".$_POST[E-mail].">");
  header("Location: index.php");
}
?>

og i <body>

<?php
if (!preg_match("/[a-z]{6}[0-9]{2}[abcdehlmprst]{1}[0-9]{2}[a-z0-9]{5}/i", $_POST['E-mail'])) $fejl .= "Ikke gyldig email<br>";
?>

og

<? echo $fejl; ?> ved e-mail

Men selvom fejlen er på før jeg taster i e-mail feltet, og når jeg trykker på Send, så redirecter  jeg til index.php!

Hvordan kan man gør så fejlen kommer, når man trykker på send og at man kun redirecter til index ved korrekt udfyldning?
Avatar billede farhang Nybegynder
06. august 2006 - 23:20 #17
Jeg prøver også alt mulige måder at kode. Jeg skal bare have fat i terminologien i php. Jeg er taknemlig for din hjælp.
Avatar billede iss Novice
06. august 2006 - 23:33 #18
if (!preg_match("/[a-z]{6}[0-9]{2}[abcdehlmprst]{1}[0-9]{2}[a-z0-9]{5}/i", $_POST['E-mail'])) $fejl .= "Ikke gyldig email<br>";

if(empty($fejl)) {
  $msg = "Fornavn:".$_POST["Fornavn"]."\nEfternavn:".$_POST["Efternavn"]."\nFirma:".$_POST["Firma"]."\nCVR/SE nr.:".$_POST["CVR"]."\nAdresse:".$_POST["Adresse"]."\nPostnr.:".$_POST["Postnr"]."\nBy:".$_POST["By"]."\nTelefon:".$_POST["Telefon"]."\nMobil:".$_POST["Mobil"]."\nFax:".$_POST["Fax"]."\nE-mail:".$_POST["E-mail"]."\nDomænenavn:".$_POST["Domainnavn"]."\nDomænetype:".$_POST["Domaintype"]."\nHar domænenavn:".$_POST["Hardomainnavn"]."\nHar domænetype:".$_POST["Hardomæne"]."\nMailhotel:".$_POST["Mailhotel"]."\nWebdesign:".$_POST["Webdesign"]."\nWebhotel:".$_POST["Webhotel"]."\nWebshop:".$_POST["Webshop"]."\nServiceaftale:".$_POST["Serviceaftale"]."\nTryksager:".$_POST["Tryksager"]."\nBesked:".$_POST["Besked"]."\nKontaktmetode1:".$_POST["Kontaktmetode1"]."\nKontaktmetode2:".$_POST["Kontaktmetode2"]."\nKontaktmetode3:".$_POST["Kontaktmetode3"]."\nNyhedsbrev:".$_POST["Nyhedsbrev"]."\nAccept af salgsbetingelser:".$_POST["Accepterersalgsbetingelser"];
  mail("mail@designunltd.dk", "Bestilling", $msg, "From: ".$_POST["Fornavn"]." ".$_POST["Efternavn"]." <".$_POST[E-mail].">");
  header("Location: index.php");
}
Avatar billede iss Novice
06. august 2006 - 23:34 #19
Og ud over det skal du også være sikker på at der er trykket på submit.
Avatar billede iss Novice
06. august 2006 - 23:36 #20
Og hvis du vil tages seriøst som firma vil jeg nok sige du skal finde et andet webhotel end b-gone...
Avatar billede farhang Nybegynder
06. august 2006 - 23:39 #21
jeg skifter til anden webhotel i næste uge, for b-one er noget lort. Har du selv firma?
Avatar billede farhang Nybegynder
29. november 2006 - 15:28 #22
lukker spørgsmålet
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