Avatar billede lsp75 Nybegynder
04. juli 2006 - 21:22 Der er 3 kommentarer og
1 løsning

Hvordan sætter jeg en e-mail-validering ind?

Hej eksperter!!

Jeg har lavet en simpel kontaktformular, der består af tre input-felter. Det ene input-felt er til brugerens e-mail-adresse, som jeg gerne vil validere.

Jeg er helt ny på området og læser mig til det meste. Jeg ved, at jeg skal lave en funktion, der validerer. Jeg har også fundet en lille validering til e-mails, der ser således ud:

^[^@ ]+@[^@ ]+\.[^@ \.]+$

Men hvordan skriver jeg funktionen, og hvor skal den sættes ind i mit script?

Sådan ser mit script ud indtil nu:

<?php                           
$to='min@mail.com';
$subject='Jeg vil gerne kontaktes af jer';
$message=$_POST['comments'];
$headers='From: '.$_POST[email]."\r\n".
'Reply-To: '.$_POST[email]."\r\n";
mail($to, $subject, $message, $headers);
                           
// Check $name and strip any slashes:
if (strlen($_POST['name']) > 0) {
$name=stripslashes($_POST['name']);
} else {
// If no name was entered...
$name= NULL;
echo '<p>Du glemte at skrive dit navn!</p>';
echo '<p><a href=kontakt.htm>tilbage</a></p>';
}
                       
// Check $email:                   
if ( !(strlen($_POST[email]) > 0) ) {
$email= NULL;
echo '<p>Du glemte at skrive din e-mail-adresse!</p>';
echo '<p><a href=kontakt.htm>tilbage</a></p>';
}
                           
// Check $comments and strip any slashes:
if (strlen($_POST['comments']) > 0) {
$comments=stripslashes($_POST['comments']);
} else {
// If there are no comments...
$comments= NULL;
echo '<p>Du glemte at skrive en kommentar!</p>';
echo '<p><a href=kontakt.htm>tilbage</a></p>';
}           
                           
// If everything is filled out, print the message:
if (($_POST['name']) && ($_POST['email']) && ($_POST['comments'])) {                       
echo "<p>Hej {$_POST['name']}</p>
<p>Du har sendt os følgende spørgsmål/kommentar: <br/><tt>{$_POST['comments']}</tt></p>
<p>Vi sender vores svar til adressen '{$_POST['email']}' snarest muligt.</p>";
}
?>

På forhånd tak for hjælpen :-)
Avatar billede nielle Nybegynder
04. juli 2006 - 21:29 #1
Funktionen kan f.eks. se sådan her ud:

if (preg_match("/^[^@ ]+@[^@ ]+\.[^@ \.]+$/", $_POST["email"]))
    echo "Det ligner godt nok en rigtig email";
else
    echo "Indtast en email!";
Avatar billede nielle Nybegynder
04. juli 2006 - 21:39 #2
... og i en lettere omskrivning af din kode:

<?php
$sendMail = true;

$email = $_POST['email'];


// Check $email:                   
if (strlen($email) == 0 || !preg_match("/^[^@ ]+@[^@ ]+\.[^@ \.]+$/", $email))
{
    $email= NULL;
    echo '<p>Du glemte at skrive din e-mail-adresse!</p>';
    echo '<p><a href=kontakt.htm>tilbage</a></p>';

    $sendMail = false;
}
                         
// Check $name and strip any slashes:
if (strlen($_POST['name']) > 0)
{
    $name = stripslashes($_POST['name']);
}
else
{
    // If no name was entered...
    $name = NULL;
    echo '<p>Du glemte at skrive dit navn!</p>';
    echo '<p><a href=kontakt.htm>tilbage</a></p>';

    $sendMail = false;
}
                           
// Check $comments and strip any slashes:
if (strlen($_POST['comments']) > 0)
{
    $comments = stripslashes($_POST['comments']);
}
else
{
    // If there are no comments...
    $comments = NULL;
    echo '<p>Du glemte at skrive en kommentar!</p>';
    echo '<p><a href=kontakt.htm>tilbage</a></p>';

    $sendMail = false;
}           
                           
// If everything is filled out, print the message:
if ($sendMail)
{
    echo "<p>Hej {$_POST['name']}</p>
    <p>Du har sendt os følgende spørgsmål/kommentar: <br/><tt>{$_POST['comments']}</tt></p>
    <p>Vi sender vores svar til adressen '{$_POST['email']}' snarest muligt.</p>";

    $to = 'min@mail.com';
    $subject = 'Jeg vil gerne kontaktes af jer';
    $message = $_POST['comments'];
    $headers = 'From: ' . $email . "\r\n" . 'Reply-To: ' . $email . "\r\n";
    mail($to, $subject, $message, $headers);
}
?>
Avatar billede lsp75 Nybegynder
04. juli 2006 - 22:33 #3
Hej nielle

Du er fantastisk - det virker jo helt, som det skal :-)
Tak for den udførlige kode.

Laver du din kommentar om til svar, så jeg kan give dig nogle points?
Avatar billede nielle Nybegynder
04. juli 2006 - 22:41 #4
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