Avatar billede muddyw. Praktikant
19. marts 2007 - 08:52 Der er 28 kommentarer og
1 løsning

tjekke bruger-input i mailform

Jeg har lavet´denne simple mailform (efter en tutorial på nettet):

<?php
$to = "mail@mail.dk";
$subject = "Feedback fra website";
$from = $_REQUEST['Email'] ;
$name = $_REQUEST['Name'] ;
$headers = "From: $from";


$fields = array();
$fields{"Name"} = "Navn";
$fields{"Company"} = "Firma";
$fields{"Address"} = "Adresse";
$fields{"Zip"} = "Postnummer";
$fields{"By"} = "By";
$fields{"Phone"} = "Telefon";
$fields{"Email"} = "E-mail";
$fields{"Message"} = "Besked";

$body = "Vi har modtaget følgende besked fra Dannebrog website:\n\n"; foreach($fields as $a => $b){ $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); }


/* skal kun bruges hvis afsenderen skal have en bekræftigelse tilbage.
$headers2 = "From: noreply@YourCompany.com";
$subject2 = "Thank you for contacting us";
$autoreply = "Thank you for contacting us.
Somebody will get back to you as soon as possible, usualy within 48 hours. If you have any more questions, please consult our website at www.oursite.com";
*/

if($from == '') {print "Husk at indtaste din e-mail";}
else {
if($name == '') {print "Husk at indtaste dit navn";} 
else {
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: /tak.html" );}
else
{print "Der opstod en fejl og mailen blev ikke sendt."; }
}
}
?>


Den tjekker om brugeren har indtastet sin e-mail og navn og giver en besked hvis ikke.

Hvad skal jeg skrive hvis jeg også vil have den til at tjekke om brugeren har indtastet sit postnummer og telefonnummer - og give en besked hvis ikke??

Hjælp ønskes hurtigt ;-)
Avatar billede spaceus Nybegynder
19. marts 2007 - 09:21 #1
if($from == '') {print "Husk at indtaste din e-mail";}
else {
if($name == '') {print "Husk at indtaste dit navn";} 
else {
if($Zip== '') {print "Husk at indtaste postnr";} 
else {
if($Zip== '') {print "Husk at indtaste postnr";} 
else {
if($Phone== '') {print "Husk at indtaste telefon";} 
}
else {
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: /tak.html" );}
else
{print "Der opstod en fejl og mailen blev ikke sendt."; }
}
}
Avatar billede qvisti Nybegynder
19. marts 2007 - 09:23 #2
mit forslag vil være at du bruger "is_numeric()"! og derefter evt laver en test på om postnr. 1000 < $zip < 10000 og evt det samme på tlf. selvom den er noget sværer
Avatar billede spaceus Nybegynder
19. marts 2007 - 09:25 #3
det tjekker kun validitet, her blev spurgt om tjek af indhold, men ja du har ret, tjek postnr har 4 cifre og tjek tlf har 8
Avatar billede muddyw. Praktikant
19. marts 2007 - 09:50 #4
fatter det ikke - det virker ikke - jeg skriver:

if($from == '') {print "Husk at indtaste din e-mail";}
else {
if($name == '') {print "Husk at indtaste dit navn";} 
else {
if($Zip== '') {print "Husk at indtaste postnr";} 
else { 
if($Phone== '') {print "Husk at indtaste telefon";} 
}
else {
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: /tak.html" );}
else
{print "Der opstod en fejl og mailen blev ikke sendt."; }
}
}
?>
Avatar billede muddyw. Praktikant
19. marts 2007 - 09:50 #5
hvis jeg undlader atskrive noget i et af felterne får jeg ingen melding - bare en blank side
Avatar billede spaceus Nybegynder
19. marts 2007 - 09:55 #6
if($from == '') {print "Husk at indtaste din e-mail";}
else {
if($name == '') {print "Husk at indtaste dit navn";} 
else {
if($Zip== '') {print "Husk at indtaste postnr";} 
else { 
if($Phone== '') {print "Husk at indtaste telefon";} 
else {
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: /tak.html" );}
else
{print "Der opstod en fejl og mailen blev ikke sendt."; }
}
}
?>
Avatar billede muddyw. Praktikant
19. marts 2007 - 09:58 #7
det virker ikke!!
- hvis jeg fjerner de to nye tjek, virker det som det gjorde før.

hvad er der galt her?
Avatar billede qvisti Nybegynder
19. marts 2007 - 10:00 #8
umiddelbart bør du overveje din syntax lidt...

if (kontrol) { hvad der skal udføres! }
else if (kontrol) { hvad der skal udføres! }
else if (kontrol) { hvad der skal udføres! }
else if (kontrol) { hvad der skal udføres! }
else { hvad der skal udføres hvis alle kontrollerne er ok! }

men det er bare for at gøre det nemmere for dig selv, tror ikke det løser dit problem
Avatar billede spaceus Nybegynder
19. marts 2007 - 10:04 #9
if($from == '') {print "Husk at indtaste din e-mail";}
else {
if($name == '') {print "Husk at indtaste dit navn";}
else{
if($Zip == '') {print "Husk at indtaste dit navn";}
else{
    if($Phone == '') {print "Husk at indtaste dit navn";}
}
}
else {
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: /tak.html" );}
else
{print "Der opstod en fejl og mailen blev ikke sendt."; }
}
}
Avatar billede muddyw. Praktikant
19. marts 2007 - 10:07 #10
hm - jeg har prøvet begge jeres forslag - uden positiv resultat - stadig bare blank side :-(
Avatar billede muddyw. Praktikant
19. marts 2007 - 14:01 #11
er der nogen der har en god ide til hvad der er galt  her?
Avatar billede dkfire Nybegynder
19. marts 2007 - 17:37 #12
Hvordan ser din kode ud ???
Hvem er din host ???
Avatar billede muddyw. Praktikant
19. marts 2007 - 18:07 #13
koden er vel den du kan se ovenover ;-S
host=One.com
Avatar billede muddyw. Praktikant
19. marts 2007 - 18:08 #14
kode kommer her:

if($from == '') {print "Husk at indtaste din E-mail";}
else {
if($name == '') {print "Husk at indtaste dit navn";} 
else {
if($Zip== '') {print "Husk at indtaste dit postnr";} 
else {
if($Phone== '') {print "Husk at indtaste dit telenummer";} 
else {
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: /kontakt.html" );}
else
{print "Der opstod en fejl og mailen blev ikke sendt."; }
}
}
?>
Avatar billede muddyw. Praktikant
20. marts 2007 - 11:55 #15
er der stadig ingen som kan hjælpe?
Avatar billede dkfire Nybegynder
20. marts 2007 - 12:51 #16
Har du slået fejlmeddelser til i dit kontrolpanel hos one.com
Jeg mener vist nok at de pr default er slået fra, hvilket bevirker at du ikke vil se fejlmeddelser, og derfor kun får en blank side at se.
Avatar billede dkfire Nybegynder
20. marts 2007 - 12:51 #17
Det hedder vist nok php-error.
Avatar billede muddyw. Praktikant
20. marts 2007 - 13:22 #18
kigger lige
Avatar billede muddyw. Praktikant
20. marts 2007 - 13:59 #19
nu har jeg slået php-error til og jeg får stadig bare en blank side
Avatar billede muddyw. Praktikant
20. marts 2007 - 14:05 #20
ok nu får jeg fejlmelding
Avatar billede dkfire Nybegynder
20. marts 2007 - 14:10 #21
Jeg synes der er noget galt med dine if-sætninger.
Så vidt jeg kan se mangler der to } til slut:

if($from == '') {print "Husk at indtaste din E-mail";}
else {
if($name == '') {print "Husk at indtaste dit navn";}
else {
if($Zip== '') {print "Husk at indtaste dit postnr";}
else {
if($Phone== '') {print "Husk at indtaste dit telenummer";}
else
{
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: /kontakt.html" );}
else
{print "Der opstod en fejl og mailen blev ikke sendt."; }
}
}
}
}
?>

Hvad siger kildekoden til den tomme side du får vist ??
Avatar billede dkfire Nybegynder
20. marts 2007 - 14:11 #22
He he tænkte jeg nok.
Avatar billede muddyw. Praktikant
20. marts 2007 - 14:28 #23
Nu skriver jeg sådan - og nu får jeg ingen fejl, men der skrives "Husk at indtaste dit zip" - selvom jeg HAR indtastet i dette felt:

if($from == '') {print "Husk at indtaste din e-mail";}
elseif
($name == '') {print "Husk at indtaste dit navn";}
elseif
($zip == '') {print "Husk at indtaste dit zip";}
elseif
($phone == '') {print "Husk at indtaste dit phone";}
else {
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: /tak.html" );}
else
{print "Der opstod en fejl og mailen blev ikke sendt."; }
}
?>
Avatar billede dkfire Nybegynder
20. marts 2007 - 14:36 #24
Det er klart, du mangler at tildele $zip en værdi.
Ved
$from = $_REQUEST['Email'];
$name = $_REQUEST['Name'];
skal du lige tilføje:
$zip = $_REQUEST['zip'];
$phone = $_REQUEST['phone'];
Avatar billede muddyw. Praktikant
20. marts 2007 - 22:26 #25
dkfire -->

genialt - ja jeg mangler selvfølgelig at sætte de to variabler! og så dit script:

if($from == '') {print "Husk at indtaste din E-mail";}
else {
if($name == '') {print "Husk at indtaste dit navn";}
else {
if($Zip== '') {print "Husk at indtaste dit postnr";}
else {
if($Phone== '') {print "Husk at indtaste dit telenummer";}
else
{
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: /kontakt.html" );}
else
{print "Der opstod en fejl og mailen blev ikke sendt."; }
}
}
}
}
?>

jeg er overglad - mange tak ;-)

smid et svar!
Avatar billede muddyw. Praktikant
20. marts 2007 - 22:34 #26
by the way:

hvad skriver jeg, hvis jeg vil lave en maxlength i besked-boksen "Message" ?
Avatar billede dkfire Nybegynder
20. marts 2007 - 23:40 #27
Noget du vil tjekke i php ??
Så kan du gøre følgende:

if($from == '') {print "Husk at indtaste din E-mail";}
else {
if($name == '') {print "Husk at indtaste dit navn";}
else {
if($Zip== '') {print "Husk at indtaste dit postnr";}
else {
if($Phone== '') {print "Husk at indtaste dit telenummer";}
else {
if( strlen($_REQUEST['Message']) > 200 ){print "Din besked var for lang";}
else
{
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: /kontakt.html" );}
else
{print "Der opstod en fejl og mailen blev ikke sendt."; }
}
}
}
}

strlen() tæller antallet af karatere, incl mellemrum, i en streng.
Avatar billede dkfire Nybegynder
20. marts 2007 - 23:40 #28
og lige et svar, he he
Avatar billede muddyw. Praktikant
21. marts 2007 - 00:35 #29
Rigtig fedt.
Mange tak!!!
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