Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 19:55 Der er 23 kommentarer og
1 løsning

Eksempel på hvordan man validere inden afsending af formular

Hej PHP eksperter,

sidder og roder med denne tilmeldingsformular:

http://netau.dk.linux14.wannafind.dk/formular_ledelse.htm


Hvordan kan jeg validere om de indtastninger brugerne har lavet er korrekte inden disse data bliver afsendt til en e-mail.?


Er der nogen der kan hjælpe?
Avatar billede jakobdo Ekspert
26. oktober 2005 - 20:14 #1
Du kan evt lave det inden det sendes til serveren med javascript. (det kan omgåes)
Du kan også lave valideringen i regexp.
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 20:15 #2
hvad er regexp?

Og kan du hjælpe mig med dette?
Avatar billede jaw Nybegynder
26. oktober 2005 - 20:21 #3
Regexp er regulære udtryk, som den cpr-nr-tjekker jeg lavede til dig i går.
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 20:22 #4
hej jaw,

Ja den virkede desværre ikke! :[
Avatar billede jaw Nybegynder
26. oktober 2005 - 20:24 #5
Så vil jeg stadig påstå, at du bruger den forkert. Men hvis du vil have support på den, så brug samme tråd.
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 20:25 #6
denne tråd?
Avatar billede jaw Nybegynder
26. oktober 2005 - 20:26 #7
Nej, den fra i går.
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 20:29 #8
Du tænker nok på denne tråd http://exp.dk/spm/659107  men der er svaret jo accepteret, desuden er der mange rettelser i koden siden denne tråd.


Du kan jo få point her også ;]


mvh
Mads
Avatar billede jakobdo Ekspert
26. oktober 2005 - 20:37 #9
Hvilke data vil du have valideret?
Avatar billede jaw Nybegynder
26. oktober 2005 - 20:37 #10
Jamen jeg siger jo det jeg sagde i går. For mig at se validerer den helt som den skal, endda når jeg tester med dit eget script !
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 20:46 #11
jo hov den validerer også cpr nr korrekt! det er mig der husker forkert.

jeg vil gerne have den til at validere min email samt alle de felter der er markeret med *  (disse felter skal være udfyldt.


Du ka se felterne på URL.


Meningne er dog at den IKKE må sende data til email før de krævede valideringer fuldført. Men det er måske enormt svært at lave?
Avatar billede jaw Nybegynder
26. oktober 2005 - 20:48 #12
Nej, egentlig ikke, men jeg synes du skal kaste linket herind også, så jakob har en chance.
Avatar billede jakobdo Ekspert
26. oktober 2005 - 21:29 #13
For ikke jaw eller jeg skal lave det som vi ønsker, så synes jeg du skal prøve at forklare med ord hvordan du vil have valideret dine felter.
F.eks. hvad er en email?
Er det: tekst @ tekst . landekode?
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 21:51 #14
ja email er tekst@tekst.landekode eller com, biz, net og hvad der ellers findes!


Jeg vil "blot" have at de felter der er makeret med * SKAL indtastes før formularen afsendes.


Er det noget i kan hjælpe mig med?


mvh
mads
Avatar billede jakobdo Ekspert
26. oktober 2005 - 21:55 #15
Jamen vil du teste om en email er "korrekt" email, eller om felterne bare er udfyldt?
Du kan teste om et felt er udfyldt med: isset($_POST["email"])
Eller
if (preg_match('/\\b[A-Z0-9._%-]+@[A-Z0-9._%-]+\\.[A-Z0-9._%-]{2,4}\\b/', $_POST["email"]))
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 21:56 #16
ja men det hjælpe jo ikke på om formularen/datat sendes til email. Den sender jo data uanset om indtastet eller ej lige nu!
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 21:57 #17
min formulare lige nu sender blot, man kan endda lade alle felter være blanke og den sender til emailen alligevel!
Avatar billede jaw Nybegynder
26. oktober 2005 - 21:57 #18
Det er jo fordi, at du skal strukturere det ordentligt. Du kender vel til if og else? Det er jo ikke meget andet end:

if(alt er ok) {
  send mail
} else {
  giv fejl
}
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 21:59 #19
ja det er sådan noget jeg skal til at rode med. Det er sådant et eksempel jeg skal anvende.

Kender du et sted hvor der eventuelt er en tutorial til et sådan script!?
Avatar billede jaw Nybegynder
26. oktober 2005 - 22:14 #20
Jeg kan lige give et lille eksempel, håber jeg du kan bruge

if (!preg_match('/\\b[A-Z0-9._%-]+@[A-Z0-9._%-]+\\.[A-Z0-9._%-]{2,4}\\b/', $_POST["email"])) {
  echo "Emailen er forkert";
} elseif( min cpr-tjekker fra i får) {
  echo "Fejl i cpr-nr";
} elseif (empty($_POST['navn'])) {
  echo "Navnet kan ikke være blankt!";
} else {
  mail( ---- );
}
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 22:53 #21
ok kigger på den. Jeg skulle lige se paradise Hotel, men nu er jeg tilbage!

mvh
mads
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 23:02 #22
Jeg får fejlen at der er en "unexpected T-ELSEIF på linie 30:

<?
$error = array();
if(!preg_match("/^\\d{6}-\\d{4}$/", $_POST['cpr'])) {
  $error[] = "Du har fejl i cpr-nr.";
  }
 
if (!preg_match('/\\b[A-Z0-9._%-]+@[A-Z0-9._%-]+\\.[A-Z0-9._%-]{2,4}\\b/', $_POST["email"])) {
  echo "Emailen er forkert";
} elseif("detter er en test" ) {
  echo "Fejl i cpr-nr";
} elseif (empty($_POST['navn'])) {
  echo "Navnet kan ikke være blankt!";
} else {
  mail( "test igen");
}


Linie 30:

elseif(empty($_POST['efternavn'])) {
  $error[] = "Du har fejl i efternavn-feltet";
}




<--------------------->

Jeg går ud fra ar jeg ikke må lade valideringen gennemløbe på denne måde, men da jeg ike rigtig er inde i syntaxen så er det svært at gennemskue.


Men jeg roder lidt rundt med det imdligertid

mvh
Mads
Avatar billede foxmulder58 Praktikant
26. oktober 2005 - 23:26 #23
Nej den får jeg ikke til at virke:


<?
$error = array();
if(!preg_match("/^\\d{6}-\\d{4}$/", $_POST['cpr'])) {
  $error[] = "Du har fejl i cpr-nr.";
  }
 
if (!preg_match('/\\b[A-Z0-9._%-]+@[A-Z0-9._%-]+\\.[A-Z0-9._%-]{2,4}\\b/', $_POST["email"])) {
  echo "Emailen er forkert";
} elseif("detter er en test" ) {
  echo "Fejl i cpr-nr";
} elseif (empty($_POST['navn'])) {
  echo "Navnet kan ikke være blankt!";
} else {
  mail( "test igen");
}



elseif(empty($_POST['efternavn'])) {
  $error[] = "Du har fejl i efternavn-feltet";
}
elseif(empty($_POST['navn'])) {
  $error[] = "Du har fejl i navn-feltet";
  }
elseif(empty($_POST['adresse'])) {
  $error[] = "Du har fejl i adresse feltet";
}
elseif(empty($_POST['postnr'])) {
  $error[] = "Du har fejl i postnr feltet";
}
elseif(empty($_POST['by'])) {
  $error[] = "Du har fejl i by feltet";
  }
if(count($error) > 0) {
  foreach($error as $v) {
    echo $v . "<br />";
  }
} else {
  //OK!
}


$besked .= "cpr: ".$_POST['cpr']."\n\n";
echo "cpr nr: ".$_POST['cpr']."<br />";

$besked .= "Efternavn: ".$_POST['efternavn']."\n\n";
echo "Efternavn: ".$_POST['efternavn']."<br />";

$besked .= "Navn: ".$_POST['navn']."\n\n ";
echo "Navn: ".$_POST['navn']."<br />";

$besked .= "Adresse: ".$_POST['adresse']."\n\n ";
echo "Adresse: ".$_POST['adresse']."<br />";

$besked .= "Postnr: ".$_POST['postnr']."\n\n ";
echo "postnr: ".$_POST['postnr']."<br />";


$besked .= "by: ".$_POST['by']."\n\n ";
echo "By: ".$_POST['by']."<br />";



$besked .= "Telefon privat: ".$_POST['tlfPrivat']."\n\n ";
echo "Telefon Privat: ".$_POST['tlfPrivat']."<br />";


$besked .= "Telefon Firma: ".$_POST['tlfFirma']."\n\n ";
echo "telefon Firma: ".$_POST['tlfFirma']."<br />";

$besked .= "E-mail: ".$_POST['email']."\n\n ";
echo "E-mail: ".$_POST['email']."<br />";

$besked .= "Firma betaler: ".$_POST['firmabetaler']."\n\n ";
echo "Frima betaler: ".$_POST['firmabetaler']."<br />";


$besked .= "CVR nr.: ".$_POST['cvrnr']."\n\n ";
echo "CVR nr.: ".$_POST['cvrnr']."<br />";


$besked .= "Adresse: ".$_POST['adressefirma']."\n\n ";
echo "Adresse: ".$_POST['adressefirma']."<br />";


$besked .= "Post nr.: ".$_POST['postnrfirma']."\n\n ";
echo "Post Nr.: ".$_POST['postnrfirma']."<br />";


$besked .= "By: ".$_POST['byfirma']."\n\n ";
echo "By: ".$_POST['byfirma']."<br />";

mail("madsns@gmail.com", "Tilmelding_Ledelse", $besked, "From: mail@domain.dk");
?>
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 14:30 #24
lukker lige her!
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