Avatar billede visto Professor
19. december 2007 - 13:54 Der er 6 kommentarer og
1 løsning

Der skal komme fejlmelding hvis felt ikke udfyldes korrekt

I scriptet <?

$subject  = "Ang. nyhedsbrev";
$recipient = 'info@vinsiderne.dk';
$message  = "Fra: <br /> ".htmlspecialchars($_REQUEST['Navn'])."<br /><br /> Email: <br />";
$message  .= htmlspecialchars($_REQUEST['Email'])."<br /><br /> Ønske: <br
/>".htmlspecialchars($_REQUEST['M']);
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers  .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers  .= 'From: vinsiderne.dk' . "\r\n";

if(mail($recipient, $subject, $message, $headers)){
    ?><p class="besked"><br><br>Du får en bekræftelse, når din
    til- eller afmelding er registreret.</p><?
} else {
    ?><p class="besked"><strong>Fejl:</strong> Mailen kunne ikke sendes.</p><?
}
?>

som gør arbejdet i forb.m. en form, hvor man kan til- og afmelde sig nyhedsbrev, skal brugeren få en fejlmelding, hvis 1) feltet med mail-adresse ikke er udfyldt, 2) der mangler @ i den indtastede mail-adresse.
Hvad skal ændres/tilføjes i scriptet, før dette kan lade sig føre?

Ideelt ville være, hvis der kom to forskellige beskeder i de to tilfælde: 1) Du skal angive din mail-adresse, 2) Mail-adressen er ikke korrekt angivet.
Avatar billede jck_true Nybegynder
19. december 2007 - 15:24 #1
lav et check ala
<?php
if(!preg_match('/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/')) {
die('Forkert email');
}
?>
Avatar billede visto Professor
19. december 2007 - 22:19 #2
Jeg er ikke PHP-mand. Kan du ikke sætte det ind i scriptet? "Ala" med for mange eksperimenter til følge er nok dømt til at mislykkes for sådan en som mig...
Avatar billede visto Professor
01. januar 2008 - 15:02 #3
Jeg har nu prøvet at indsætte
if(!preg_match('/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/')) {
die('Forkert email');
et par steder i scriptet. Det der ser rigtigst ud er sådan:
<?

$subject  = "Ang. nyhedsbrev";
$recipient = 'info@mitdomæne.dk';
$message  = "Fra: <br /> ".htmlspecialchars($_REQUEST['Navn'])."<br /><br /> Email: <br />";
$message  .= htmlspecialchars($_REQUEST['Email'])."<br /><br /> Ønske: <br
/>".htmlspecialchars($_REQUEST['M']);
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers  .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers  .= 'From: mitdomæne.dk' . "\r\n";

if(!preg_match('/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/')) {
die('Forkert email');
}
if(mail($recipient, $subject, $message, $headers)){
    ?><p class="besked"><br><br>Du får en bekræftelse, når din
    til- eller afmelding er registreret.</p><?
} else {
    ?><p class="besked"><strong>Fejl:</strong> Beskeden kunne ikke sendes.</p><?
}
?>

Men jeg får følgende fejlmeddelelse, når jeg udfylder formularen korrekt (venter med at udfylde forkert, til det virker, når udfyldingen er korrekt):

Warning: preg_match() expects at least 2 parameters, 1 given in /home/virtual/vinsiderne.dk/public_html/kontakt/nyhedsbrev/nyhedsbrev.php on line 21
Forkert email

Line 21 er: if(!preg_match('/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/')) {

Kan nogen hjælp?
Avatar billede visto Professor
02. januar 2008 - 22:08 #4
Afslutter hermed.
Avatar billede nielle Nybegynder
02. januar 2008 - 22:26 #5
Fandt du ud af det?
Avatar billede visto Professor
02. januar 2008 - 22:29 #6
Ja, jeg fandt svaret på phpuniverset.dk. Du mås sige, hvis svaret interesserer dig.
Avatar billede nielle Nybegynder
02. januar 2008 - 22:46 #7
Nej, jeg ville bare høre om du fortsat havde brug for hjælp.

Jeg ville nu nok mene at den indikerede løsning kunne laves lidt mere elegant. Faktisk har jeg skrevet nogle artikler her på Eksperten om netop regulære udtryk, og den sidste i serien:

http://www.eksperten.dk/artikler/1162

- viser hvordan validering af email kunne gøres.
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