Formulier met attachment

Status
Niet open voor verdere reacties.

danko

Gebruiker
Lid geworden
15 sep 2006
Berichten
5
Hallo beste mensen,

Ik wil graag een formulier maken dat bezoekers kunnen gebruiken om een vraag te stellen, maar ook de mogelijkheid een foto bij te voegen.

Na klikken op versturen dient zowel het formulier als de foto in mijn mailbox te landen.

Heeft iemand hier een suggestie voor?

Alvast bedankt.
 
Wat ik zou doen is de broncode van phpbb downloaden, en het stuk over gebruikersregistratie aanpassen naar jouw smaak (daarin wordt ook gemaild naar de 'administrator' van het forum). Ook nog even wat spullen 'lenen' in de php-file voor het posten van een bericht (voor het aanhangen en uploaden van attachments/bijlagen).

Die 2 combineren, en klaar, denk ik zo.

Tijs.
 
Wat ik zou doen is de broncode van phpbb downloaden, en het stuk over gebruikersregistratie aanpassen naar jouw smaak (daarin wordt ook gemaild naar de 'administrator' van het forum). Ook nog even wat spullen 'lenen' in de php-file voor het posten van een bericht (voor het aanhangen en uploaden van attachments/bijlagen).

Die 2 combineren, en klaar, denk ik zo.

Tijs.

Grappig, heb je ooit naar de bron code van phpbb gekeken?
Beetje overdreven denk je niet?

PHP:
<?php
//mail formulier voor bijlage
$email ='mijn@email.com';
//geneer boundary
DEFINE('bound',md5(uniqid(time())));
//check request method

    if($_SERVER['REQUEST_METHOD'] == 'POST')
    {
         //if file upload send with email as mixed
         if(!empty($_FILES['file']['name']))
         {
            //check filesize
             if($_FILES['file']['size'] < 1024*50)
             {
                  $headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
                $headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
                   $headers .= "MIME-Version: 1.0\r\n";
                   //email bestaat uit meerdere  bestanden dus vertel wat de scheidings teken is en dat het een multipart is
                   $headers .= "Content-Type: multipart/mixed; boundary=\"".bound."\"\r\n";
                   //we zenden een attachment mee
                   $headers .= "Content-Disposition:  attachment\r\n";
                   //readfile
                   $fp = fopen($_FILES['file']['tmp_name'],'r');
                   $bestand = fread($fp,$_FILES['file']['size']);
                   fclose($fp);
                   //create body
                   //generenen een body. Dit is een multi part gezeik
                   $body.= "This is a multi-part message in MIME format.\r\n";
                   $body.= "\r\n";
                //boundary
                $body.= "--".bound."\r\n";
                //content type + charater set (iso in dit geval)
                $body.= "Content-Type: text/plain; charset=iso-8859-1\r\n";
                //codering (7 bit)
                $body.= "Content-Transfer-Encoding: 7bit\r\n";
                $body.= "\r\n";
                //het bericht
                $body.= $_POST['bericht'] ."\r\n";
                //boundary
                $body.= "--".bound."\r\n";
                //content type + naam bestand (database.sql)
                $body .= "Content-Type: application/octet-stream; name=".$_FILES['file']['name']."\r\n";
                //codering
                $body .= "Content-Transfer-Encoding: base64\r\n";
                //als bijlage toegevoegd
                $body.= "Content-disposition: attachment\r\n";
                $body .= "\n";
                //de inhoud van het bestand
                $body .= chunk_split(base64_encode($bestand )) . "\r\n";
                mail($email,$_POST['subject'],$body,$headers);
                echo 'Email (Met een bijlage) is verzonden';
            }
            else
            {
                 echo 'Bestands groote is te groot';
             }
        }
        else
        {
            $headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
               $headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
               $headers .= "MIME-Version: 1.0\r\n";
               $bericht = $_POST['bericht'];
               mail($email,$_POST['subject'],$bericht,$headers);
               echo 'Email (Zonder een bijlage) is verzonden';
         }
     }
     else
     {
        //mail formulier je moet zelf het fomullier maken

        echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"POST\" enctype=\"multipart/form-data\">";
         echo "Naam: <input type='text' name='from'><br>";
         echo "Email:<input type='text' name='email'><br>";
         echo "Onderwerp:<input type='text' name='subject'><br>";
         echo "Bestand:<input type='file' name='file'><br>";
         echo "Bericht:<textarea name='bericht'></textarea><br />";
        echo "<input type=\"submit\" value=\"Verzenden\">";
    }
?>


Aanpasen waar nodig
 
maar is dit ook te begrijpen voor een beginnende php'er?
 
code formulier

Dank KaWouter!

Kun je me nog vertellen waar de volgende regel voor staat?

"DEFINE('bound',md5(uniqid(time()))); "

Bedankt!
 
verplichte velden

Kunnen jullie mij misschien ook nog vertellen hoe ik er verplichte velden inhang en bestandstype beperk tot .jpg en .gif?

Bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan