Contact formulier met bestanden

Door Jan , 22 jaar geleden, 7.360x bekeken

Met het formulier en het php script worden bestanden tijdelijk geupload naar de server en dan als e-mail verstuurd. Het werkt, maar het heeft nog wat aandacht nodig. Met name een aantal logische tests zo het script goed doen. Ik heb gebruik gemaakt van PHPmail class. De rest van internet afgehaald en aangepast.

Scrol naar beneden voor de aangepaste versie na commentaar. [/B]

De class die in dit script gebruikt wordt kun je downloaden op:
http://phpmailer.sourceforge.net

Gesponsorde koppelingen

PHP script bestanden

  1. contact-formulier-met-bestanden

 

Er zijn 20 reacties op 'Contact formulier met bestanden'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Stefan
Stefan
22 jaar geleden
 
0 +1 -0 -1
Mag ik de HTML code heel onoverzichtelijk vinden? Zet al de style code's in een .css bestand, en het is een stuk makkelijker te volgen...


22 jaar geleden
 
0 +1 -0 -1
Ik snap het niet helemaal wat de bedoeling is: Bestanden versturen via een contact formulier.

Veder ook een e-mail naar de beheerder sturen als bestanden niet verwijderd konden worden.

Deze dingen $_FILES["userfile"] met enkele quotes schrijven.

Opmaak er uit halen en welke mailclass heb je gebruikt.

Veder aardig overzichtelijk
Jan
Jan
22 jaar geleden
 
0 +1 -0 -1
Hoi Stefan,

ja je hebt gelijk, maar dat is met frontpage gemaakt en voor de rest ben ik vooral met het php script bezig geweest. Maar neemt niet weg dat je gelijk hebt.
Eris -
Eris -
22 jaar geleden
 
0 +1 -0 -1
require("class.phpmailer.php");

$mail = new PHPMailer();

Het is is ook handig als je class mee zgeeft :?
B a s
B a s
22 jaar geleden
 
0 +1 -0 -1
Graag class bij dit script toevoegen :)
Jan
Jan
22 jaar geleden
 
0 +1 -0 -1
PHPmail en de bijbehorende classes en documenten zijn gratis te downloaden op: http://phpmailer.sourceforge.net/
- wes  -
- wes -
22 jaar geleden
 
0 +1 -0 -1
beetje rommelig, ook geen \r\n , zodat je mailing er ook halverwege kan uitklappen. Btw je provider gaat dit ook niet leuk vinden , ik weet zeker dat zo 90% van de mail bounced
Jan
Jan
22 jaar geleden
 
0 +1 -0 -1
Wes,
Waarom zou de mail bouncen? Ik heb het script wel 100 x laten draaien en elke keer krijg ik netjes een mail met de meegegeven velden en bestanden binnen. Ik snap ook niet waarom de mail er halverwege uit kan knallen. Ik maak gebruik van de PHPmail class en het enige dat ik doe is de variabelen vullen. PHPmail is niet door mij geschreven, maar ik ga er van uit dat daar genoeg aandacht is aan besteed. Dat het rommelig is, kan ik me voorstellen. Ik had beter gebruik kunnen maken van functies en de opmaak eruit laten.
PHP erik
PHP erik
22 jaar geleden
 
0 +1 -0 -1
Die $mail->Body's zijn allemaal praktisch hetzelfde. Je kunt dan beter aan de hand van function arguments een loop maken om wat flexibiliteit te creeƫren.

Sorry, maar dit lijkt me echt een nutteloos script.
Jan
Jan
22 jaar geleden
 
0 +1 -0 -1
Voor mij is het erg bruikbaar, ik dacht voor anderen misschien ook. Ik kon alleen maar scripts vinden voor of contact, of bestanden uploaden. Niet gecombineerd en dan per mail binnen krijgen.

Met die functie ben ik bezig. Als je altijd hebt geprogrammeerd in TACL (Tandem) is het even wennen. Voor de rest iedereen bedankt voor de bruikbare tips.
B a s
B a s
22 jaar geleden
 
0 +1 -0 -1
Ik vind het een goed script.. Die met bijlagen was er idd nog niet..!
Joris
Joris
22 jaar geleden
 
0 +1 -0 -1
Hallo!

Ik heb hier onder een script waar je kunt antwoorden. Er moet echter ook een mogelijkheid zijn voor het uploaden van een plaatje.
Wat moet ik veranderen? mail.php of juist de formpagina zelf?

------------------ mail.php -----

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

// E-mail bericht opstellen
 
$Bericht= stripslashes($Bericht);

// Mail versturen
mail("[email protected]","Reactie WCSITE door: ".$Naam."",
"
Naam:                     "
.$Naam."
Adres:                     "
.$Adres."
Postcode:                     "
.$Postcode."
Plaats:                     "
.$Plaats."
Geboortedatum:                 "
.$dag." / ".$maand." / ".$jaar."
Email:                     "
.$Email."

Nieuw Poepwoord:                 "
.$poepwoord."
Populairste Poepwoord:             "
.$poppoepwoord."
Wat heb ik gegeten?             "
.$wathebikgegeten."
"
.$file."
"
.$Naam."
"
.$Naam."
"
.$Naam."
"
,"From: Email adres");
Header("Location: http://www.toilethumor.nl");
?>


----------- FORMULIER ----

<table border="0" cellspacing="0" cellpadding="0" id="table2">
<tr>
<td class="body" width="150px"><h4><font face="Georgia"><br>
Naam:</font></h4></td>
<td><font face="Georgia"><input name="Naam" type="text" class="form" id="Naam" maxlength="30" style="width:180" value=""></font></td>
</tr>
<tr>
<td class="body"><h4><font face="Georgia">E-mailadres:</font></h4></td>
<td valign="top"><font face="Georgia"><input name="Email" type="text" class="form" id="Email" maxlength="50" style="width:180" value=""></font></td>
</tr>
<tr>
<td class="body"><h4><font face="Georgia">Poepletter:</font></h4></td>
<td valign="top"><input type="file" name="file" size="20"></td>
</tr>
<tr>
<td class="body">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td class="body">&nbsp;</td>
<td><font face="Georgia">
<input name="submit" type="submit" class="form" value="Versturen" style="font-family: Georgia"></font></td>
</tr>
</table>


22 jaar geleden
 
0 +1 -0 -1
Vragen stel je op het forum. Gebruik gewoon dit script
Jan
Jan
22 jaar geleden
 
0 +1 -0 -1
Ik heb het script aangepast en de opmerkingen er in verwerkt. Ook een aantal controles toegevoegd. Als je het echt 'veilig'wilt doen, zul je ook nog op file extenties moeten controleren. Aangezien ik een beginner ben, graag jullie commentaar op de codering en het gebruik van functies, variabelen, etc.

De aangepaste code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.
// De class die in dit script gebruikt wordt kun je downloaden op:
// http://phpmailer.sourceforge.net


// Main

if (ContrSize($test) != 1)
{

          $uploaddir = '/home/httpd/vhosts/......./upload/'; // geef hier de naam v.d. upload directory
     StuurMail($uploaddir);
    }
else{
     exit;
}


// Controleer file size
function ContrSize($test)
{

    foreach ($_FILES['userfile']['error'] as $key => $error)
    {

        if (($error == UPLOAD_ERR_FORM_SIZE || $error == UPLOAD_ERR_INI_SIZE))  //Value: 0: There is no error, the file uploaded with success
        {
            echo "Het bestand: {$_FILES['userfile']['name'][$key]} is te groot  <br>"; //gezien de error codes hoeft dit niet waar te zijn
            echo "Gebruik de button VORIGE van uw browser om het bestand aan te passen"; //in ieder geval is de error geen 0 er is iets mis met het bestand
            return $test = 1;
         }
    }
}
// end function controleer file size

function StuurMail($uploaddir)
{

    // Bestanden uploaden
    foreach ($_FILES['userfile']['error'] as $key => $error)
    {

        if ($error == UPLOAD_ERR_OK)
        {

        $tmp_name = $_FILES['userfile']['tmp_name'][$key];
        $name = $uploaddir . basename($_FILES['userfile']['name'][$key]);
        move_uploaded_file($tmp_name, $name);
        }
    }


    // Voor debugging
    //echo '<pre>';
    //echo 'Here is some more debugging info:';
    //print_r($_FILES);
    //print "</pre>";


    require("class.phpmailer.php");
    $mail = new PHPMailer();
    $mail->IsSendmail();                                                             // set mailer to use Sendmail
    $mail->From = "[email protected]";
    $mail->FromName = "Bericht van de website";
    $mail->AddAddress("[email protected]");                        // Voor debugging
    //$mail->AddAddress("[email protected]");                          // name is optional

    $mail->AddReplyTo("[email protected]", "Information");
    $mail->WordWrap = 50;                                                        // set word wrap to 50 characters

    // add attachments

    foreach ($_FILES['userfile']['error'] as $key => $error)
    {

        $name = $uploaddir . basename($_FILES['userfile']['name'][$key]);
        $mail->AddAttachment($name);
     }


    $mail->IsHTML(true);                                                        // set email format to HTML
    $mail->Subject = $_POST['Reden_voor_contact'];
    $mail->Subject .= " verzoek van: ";
    $mail->Subject .= $_POST['Naam'];

    // Stel body van e-mail op. Kan ook in loop maar dit is voor mij als beginner eenvoudiger te volgen
    $mail->Body    = "Bedrijfsnaam: ";
    $mail->Body    .= $_POST['Bedrijfsnaam'];
    $mail->Body    .= "<br> Functie: ";
    $mail->Body    .= $_POST['Functie'];
    $mail->Body    .= "<br> Voornaam: ";
    $mail->Body    .= $_POST['Voornaam'];
    $mail->Body    .= "<br> Achternaam: ";
    $mail->Body    .= $_POST['Naam'];
    $mail->Body    .= "<br> Aanhef: ";
    // Man of vrouw
    if ($_POST['Aanhef'] == "Dhr.")
    {

        $mail->Body    .= "De heer";
    }
else{
        $mail->Body    .= "Mevrouw";
    }

    
    // de rest kun je zelf invullen aan de hand van de gebruikte velden in je form

    $mail->AltBody = "Bericht van de website ..........NL";

    // Versturen van mail
    if(!$mail->Send())
    {

        echo "Er is helaas iets foutgegaan. Neemt u a.u.b. contact op met [email protected]. <p>";
        echo "Mailer Error: " . $mail->ErrorInfo;
        VerwijderBestanden($uploaddir); // Verwijder de bestanden van de server
           exit;
    }


    // Verwijder de bestanden van de server
    VerwijderBestanden($uploaddir);
    
    echo "Uw bericht is verstuurd. <br>";
    echo "Klik <a href='http://www..........nl/'>hier</a> om terug te gaan naar onze website";

}
// end function

function VerwijderBestanden($uploaddir)
{

    foreach ($_FILES['userfile']['error'] as $key => $error)
    {

         $name =  $_FILES['userfile']['name'][$key];
        if (empty($name) == FALSE)
        {
    
            
            $name = $uploaddir . basename($_FILES['userfile']['name'][$key]);
            if(unlink($name) == TRUE)
            {

                    // Voor Debugging
                    //echo "Tijdelijk bestand verwijderd " .$name;

            }else{
                echo "Er is iets fout gegaan bij het verwijderen van de tijdelijke bestanden op de server.";
                mail ("[email protected]", "Bestanden niet verwijderd op website ...", "De bestanden bij het uploadformulier zijn door een fout niet verwijderd");
                exit;
            }
// end if unlink = true
        } // end if not empty
    } // end foreach
} // end function VerwijderBestanden
?>
Remi
Remi
22 jaar geleden
 
0 +1 -0 -1
Ik weet dat het nogal knullig is, maar ik zit niet voor niets in de beginners sectie: kan iemand (een deel van) het bijbehorende formulier ook publiceren? Want ik neem aan dat er ook nog een formulier.php bij hoort....
Remi
Remi
22 jaar geleden
 
0 +1 -0 -1
Compleet overheen gelezen, mijn excuses!
Theo
Theo
21 jaar geleden
 
0 +1 -0 -1
Ik heb geprobeerd dit script toe te passen, maar wat ik ook doe, er komen steeds foutmeldingen, meestal na //Bestanden uploaden. Kan iemand mij vertellen welke gegevens moeten worden aangepast en waar? Bijvoorbeeld met gebruikmaking van een formulier: "mijnformulier" (ik heb tot nu toe het originele formulier gebruikt), uploaddirectory: "Ontvangen" , een mailadres: "[email protected]", en een website: "www.mijnsite .nl". Of moeten nog andere gegevens of variabelen worden aangepast?
Monica
Monica
21 jaar geleden
 
0 +1 -0 -1
Is er ook een makkelijke NL uitleg over hoe ik die class kan installeren?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jw bouman
jw bouman
20 jaar geleden
 
0 +1 -0 -1
ik heb er ook me aan de haal geweest ziet er uitgebrijd uit maar hoe kan ik de boel werkende krijgen als die sourceforce pagina met de rest er niet meer is als je ergens over begint plaats dan alles even hier in plaats van telkens door te verwijzen

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. contact-formulier-met-bestanden

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.