Avatar billede hfrontdk Nybegynder
22. juli 2003 - 12:38 Der er 14 kommentarer og
1 løsning

PHP mailform for 117. gang :o)

Jeg ville have brugt E's søgefunktion, men den er vist ude af drift i øjeblikket, så er der én (eller flere) der kan hjælpe med at lave en mailform som blot indeholder navn, e-mail og besked - samt at den validerer på e-mailen og at samtlige felter er udfyldte?
Avatar billede wicked Juniormester
22. juli 2003 - 12:42 #1
Avatar billede exp Juniormester
22. juli 2003 - 12:48 #2
Og så lige et hint til søgefunktionen:
www.google.dk/search?q=site%3Awww.eksperten.dk
Avatar billede hfrontdk Nybegynder
22. juli 2003 - 12:50 #3
Der er vist ikke noget validering og gør heller ikke brug af de nye superglobals. Et eksempel ville meget kærkommet.
Avatar billede andy Nybegynder
22. juli 2003 - 13:04 #4
Avatar billede avminarm Juniormester
22. juli 2003 - 13:16 #5
FIL: form.php

<form method=post action="send.php">
Navn: <input type="text" name="navn"><br>
Email: <input type="text" name="email"><br>
Besked: <textarea name="besked" rows="5" cols="15"></textarea><br>
<input type="submit" name="s1" value="Send">
</form>

<?php
switch($_GET['op']){
case 'ok': 
  echo "Din mail blev afsendt";
break;
case 'error':
  echo "der opstod en fejl i forbindelse med afsendelse af mail - alle felter skal udfyldes";
break;
}
?>

FIL: send.php

<?php

    if($_POST[navn] && $_POST[email] && $_POST[besked]) {
    $msg = "Mail fra:\t$_POST[navn]\r\n";
    $msg .= "E-Mail:\t$_POST[email]\r\n";
    $msg .= "besked:\t$_POST[besked]\r\n\r\n";

    $minemail = "din@mail.dk"; //Ændre her
    $emne = "Formmail fra min hjemmeside"; //Ændre her

    $mailheaders = "From: Formmail <> \r\n";
    $mailheaders .= "Reply-To: $_POST[email]\r\n\r\n";
    mail($minemail, $emne, $msg, $mailheaders);
    header("location: form.php?op=ok");
    exit;
    }
    else{
    header("location: form.php?op=error");
    exit;
    }
?>
Avatar billede henriklaursen Nybegynder
22. juli 2003 - 13:24 #6
jeg smutter lige med her..
-> hvad nu hvis man skal have vedhæftet filer i en sådan mail? hvordan gøres det? (gerne eksempel)
Avatar billede hfrontdk Nybegynder
22. juli 2003 - 13:25 #7
Ja, jeg kunne jo have forklaret lidt bedre. Jeg vil gerne have hvis det kun er i en fil og at fejlteksterne kommer ved siden af felterne - mener at bl.a. schaefner lavede et fint lille eksempel for et stykke tid siden.

Jeg forhøjer lige med 15 point for ulejligheden. :o)
Avatar billede tipsen Nybegynder
22. juli 2003 - 13:36 #8
henrik: Så skal du have bygget en "mime-mail" og det gøres nemmest ved brug af en færdig klasse - eksempelvis Mail_Mime klassen fra PEAR: http://pear.php.net/package-info.php?package=Mail_Mime

Så har jeg eks. gjort det med følgende kode:

$mime = new Mail_mime();
$mime->setTXTBody($message);
if ($this->isUploadedFile('myfile')) {
  if($this->moveUploadedFile('myfile', './tmp/')) {
      $newfilename = './tmp/' . $this->_submitFiles['myfile']['name'];
      $mime->addAttachment($newfilename, 'application/octet-stream');
      @unlink($newfilename);
  } else {
      @unlink($this->getUploadedFile('myfile'));
  }
}
$body = $mime->get();
$headers = $mime->headers($headers);
$mail = &Mail::factory('mail');
return @$mail->send($recipient, $headers, $body);
Avatar billede avminarm Juniormester
22. juli 2003 - 13:44 #9
noget i den her stil (ikke testet)

<form method=post action="<?php echo $_SERVER['PHP_SELF']; ?>">
Navn: <input type="text" name="navn"><?php if(empty($_POST['navn']) { echo "Du mangler at udfylde navn"; } ?><br>
Email: <input type="text" name="email"><?php if(empty($_POST['email']) { echo "Du mangler at udfylde email"; } ?><br>
Besked: <textarea name="besked" rows="5" cols="15"></textarea><?php if(empty($_POST['besked']) { echo "Du mangler at udfylde besked"; } ?><br>
<input type="submit" name="s1" value="Send">
</form>

<?php
  if(isset($_POST['s1']){
    if(!empty($_POST[navn]) && !empty($_POST[email]) && !empty($_POST[besked])) {
    $msg = "Mail fra:\t$_POST[navn]\r\n";
    $msg .= "E-Mail:\t$_POST[email]\r\n";
    $msg .= "besked:\t$_POST[besked]\r\n\r\n";

    $minemail = "din@mail.dk"; //Ændre her
    $emne = "Formmail fra min hjemmeside"; //Ændre her

    $mailheaders = "From: Formmail <> \r\n";
    $mailheaders .= "Reply-To: $_POST[email]\r\n\r\n";
    mail($minemail, $emne, $msg, $mailheaders);
    echo "mail blev sendt!";
    }
    else{
    echo "der opstod en fejl";
    }
  }
?>
Avatar billede avminarm Juniormester
22. juli 2003 - 13:49 #10
hov alle steder med:

<?php if(empty($_POST['navn']) { echo "Du mangler at udfylde navn"; } ?>

mangler der en ) til sidst

sådan her:

"><?php if(empty($_POST['navn'])) { echo "Du mangler at udfylde navn"; } ?><br>
Avatar billede avminarm Juniormester
22. juli 2003 - 13:56 #11
glem den første - HER:

<form method=post action="<?php echo $_SERVER['PHP_SELF']; ?>">
Navn: <input type="text" name="navn"><?php if(isset($_POST['s1']) && empty($_POST['navn'])) { echo "Du mangler at udfylde navn"; } ?><br>
Email: <input type="text" name="email"><?php if(isset($_POST['s1']) && empty($_POST['email'])) { echo "Du mangler at udfylde email"; } ?><br>
Besked: <textarea name="besked" rows="5" cols="15"></textarea><?php if(isset($_POST['s1']) && empty($_POST['besked'])) { echo "Du mangler at udfylde besked"; } ?><br>
<input type="submit" name="s1" value="Send">
</form>

<?php
  if(isset($_POST['s1'])){
    if(!empty($_POST[navn]) && !empty($_POST[email]) && !empty($_POST[besked])) {
    $msg = "Mail fra:\t$_POST[navn]\r\n";
    $msg .= "E-Mail:\t$_POST[email]\r\n";
    $msg .= "besked:\t$_POST[besked]\r\n\r\n";

    $minemail = "din@mail.dk"; //Ændre her
    $emne = "Formmail fra min hjemmeside"; //Ændre her

    $mailheaders = "From: Formmail <> \r\n";
    $mailheaders .= "Reply-To: $_POST[email]\r\n\r\n";
    mail($minemail, $emne, $msg, $mailheaders);
    echo "mail blev sendt!";
    }
    else{
    echo "der opstod en fejl";
    }
  }
?>
Avatar billede hfrontdk Nybegynder
22. juli 2003 - 20:01 #12
Det virker fint - kan du lave e-mail validering på den også?
Avatar billede avminarm Juniormester
22. juli 2003 - 21:09 #13
du kan bare bygge denne funktion ind i scriptet

function validate_email($email) {
    if (!preg_match("/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i", $email)) {
        Print"NIX DU";
        exit;
    }
        Print"ok";
}
Avatar billede hfrontdk Nybegynder
22. juli 2003 - 21:17 #14
Perfekt - tak for hjælpen!
Avatar billede avminarm Juniormester
23. juli 2003 - 09:24 #15
var så lidt
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

IT-JOB

BEC Financial Technologies

Business Continuity Manager - Technical

Det Nationale Forskningscenter for Arbejdsmiljø

IT-sikkerhedsspecialist med fokus på AI inden for forskning

Capgemini Danmark A/S

Client Partner

Capgemini Danmark A/S

AI/Data Engineer