Avatar billede dotcom1 Nybegynder
28. juni 2003 - 23:43 Der er 9 kommentarer og
1 løsning

Hvordan styler man en php mailform?

Hej eksperter.

Jeg har følgende mailform, der kan sende attachments, men hvordan styler man det, dvs. f.eks. ændrer størrelse og border på textarea, osv.? Man kan vel ikke særre STYLE="" ind i echo-sætningerne...?

Et andet spørgsmål: Når en mail er sendt fra websiden, så forsvinder mailformen og erstattes af en succes-besked - kan man ikke få succes-beskeden til bare at dukke frem under mailformen, når mailen er afsendt? :-)

Mailform med attachment:

<?php
// Hvis formen er submitted
if ($_GET['send']){
   
    // Definér $boundary
    // boundary er en unik streng der identifiserer vores email
    $boundary = uniqid("");
   
    // Hvis filtypen genkendes af browseren, sætter vi mime-typen til filtypen
    if ($_FILES['filen']['type']) {
        $mimeType = $_FILES['filen']['type'];
       
    // Ellers, sætter vi mime-type til ukendt
    } else {
        $mimeType =  "application/unknown";
    }
   
    // Læs filen ind i en variable
    $fil_var = fread(fopen($_FILES['filen']['tmp_name'], "r"), filesize($_FILES['filen']['tmp_name']));
   
    // Gør filen læsevenlig for email-klienten
    $fil_var = base64_encode($fil_var);
   
    // Split filkoden op i linier med 76 tegn i hver
    $fil_var = chunk_split($fil_var);
   
    // Følgende lille stykke klarer det meste mht. headers, der fortæller email-klienten hvad der er på vej

    // Vi sætter vores unikke streng ind her
    $body  = "\n--$boundary\n";
   
    // Vi fortæller at følgende stump er af typen text/plain samt
    // hvilket tegnsæt vi bruger
    $body .= "Content-type: text/plain; charset=iso-8859-1\n";
    $body .= "Content-transfer-encoding: 8bit\n\n";
   
    // Vi sætter body-texten ind her
    $body .= $_POST['body_text']."\n\n";
   
   
    // Slut på brødteksten
    $body .= "--$boundary\n";
   
    // Så er det filens tur
    // Vi fortæller lige mime-typen og filnavnet
    $body .= "Content-type: $mimeType; name=".$_FILES['filen']['name']."\n";
   
    // Fortæller at vi vil have filen hæftet ved - ikke direkte i mailen.
    // Vil du gerne have den direkte i mailen, ændres 'attachment' til 'inline'
    // Bemærk: Bl.a. OE viser _også_ filen i selve mailen selvom du angiver 'attachment'
    $body .= "Content-disposition: attachment; filename=".$_FILES['filen']['name']."\n";
   
    // Klienten skal have at vide at meddelelsen er encoded med base64
    $body .= "Content-transfer-encoding: base64\n\n";
   
    // Vi sætter filkoden ind
    $body .= $fil_var."\n\n";
   
    // Vi slutter af med den samme unikke streng som vi startede med
    $body .= "--$boundary--";
   
    // Vi definerer from-headeren
    $headers  = "From: ".$_POST['fra']."<x@z.com>\n";
   
    // Vi fortæller hvilken type indhold mailen indeholder
    // samt emailens unikke id-streng
    $headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
   
    // Hvis mailen bliver sendt afsted problemfrit
    if (mail("min@email.dk", "Fra website", $body, $headers)) {
        echo "Mailen er sendt!";
       
    // Hvis ikke skriver vi lige en fejlmeddelelse
    } else {
        echo "Der opstod en fejl, og mailen blev ikke sendt!";
    }

// Hvis ikke formen er submitted, vis formen
} else {
    echo  "<form action='".basename($PHP_SELF)."?send=1' enctype='multipart/form-data' method='post'>\n";
    echo  "<table>\n";
    echo  "<tr><td>Dit navn:</td><td><input type='text' name='fra'></td></tr>\n";
    echo  "<tr><td>Vedhæft fil:</td><td><input type='file' name='filen'></td></tr>\n";
    echo  "<tr><td>Besked:</td><td><textarea name='body_text'></textarea></td></tr>\n";
    echo  "<tr><td></td><td><input type='submit' value='Send'></td></tr>\n";
    echo  "</table>\n</form>\n";
}
?>
Avatar billede ahv Nybegynder
29. juni 2003 - 00:02 #1
Eksempel ->

echo  "<tr><td>Dit navn:</td><td><input type='text' name='fra' style='border: 1px solid black;'></td></tr>\n";
Avatar billede ahv Nybegynder
29. juni 2003 - 00:02 #2
Man kan fint indsætte en style ved echo.
Avatar billede dotcom1 Nybegynder
29. juni 2003 - 00:11 #3
Det er da også rigtigt. Tak. Hvordan ændrer jeg så størrelsen på textarea? Normalt ville jeg skrive: style="border: 1 solid #000000" rows="10" cols="35" name="body_tekst"></textarea> men det synes jeg ikke lige virker... Og hvad med linieskift mellem de forskellige felter? <br> duer ikke.
Avatar billede ahv Nybegynder
29. juni 2003 - 00:12 #4
echo  "<tr><td>Besked:</td><td><textarea name='body_text' rows='10' cols='35' style='border: 1px solid black;'></textarea></td></tr>\n";
Avatar billede tipsen Nybegynder
29. juni 2003 - 00:13 #5
Du kan evt. se: http://tjenester.dk/ipsens.dk/?cid=2 hvor jeg har stylet en kontakt-formular.
Avatar billede dotcom1 Nybegynder
29. juni 2003 - 00:22 #6
Ah, man bruger '' i stedet for "" :) Hvad så med ekstra linieskift mellem to felter?

>>Tipsen. Mange tak, men almindelig html-style er ikke problemet, det er når det skal placeret inde i php-kode.
Avatar billede ahv Nybegynder
29. juni 2003 - 00:26 #7
Eksempel ->

echo  "<tr><td style='padding: 10px;'>Dit navn:</td><td><input type='text' name='fra' style='border: 1px solid black;'></td></tr>\n";
Avatar billede ahv Nybegynder
29. juni 2003 - 00:27 #8
Eller med <br> ->

echo  "<tr><td>Dit navn:</td><td><input type='text' name='fra' style='border: 1px solid black;'><br></td></tr>\n";
Avatar billede dotcom1 Nybegynder
29. juni 2003 - 00:29 #9
Jeps, så tror jeg at jeg forstår princippet. Mange tak for de hurtige svar. :-)
Avatar billede tipsen Nybegynder
29. juni 2003 - 00:41 #10
dotcom: Ja så får du nok ikke så meget ud af det - heller ikke min php-kode da den er pakket ind i en masse andet som i denne sammenhæng er overflødigt...
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