Beste mensen,

Na lang zoeken had ik eindelijk een contactformulier die het bij mij doet en ook nog eens de mogelijkheid heeft tot het uploaden van een afbeelding. Aleen nu zijn er 2 dingen die mij niet lukken, ik heb namelijk geen ervaring met php. Wat niet lukt is om velden verplicht te maken, alle velden moeten verplicht zijn op de velden "kortingscode" en "bericht" na. En bovendien verstuurd hij niet alles mee, maar 3 dingen verstuurd hij en de bijlage. Kan iemand mij hier mee helpen?

<?php
//mail formulier voor bijlage
$email ='[email protected]';
//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']['email']))
{
//check filesize
if($_FILES['file']['size'] < 1000000*10000000)
{
$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. <br></br>Wij hebben een bijlage nodig om de bewerking te kunnen maken. Dus probeer het alstublieft nog een keer op nieuw';
}
}
else
{
//mail formulier je moet zelf het fomullier maken

echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"POST\" enctype=\"multipart/form-data\">";
echo "Voornaam: <input type='text' name='from'><br>";
echo "Achternaam:<input type='text' name='achternaam'><br>";
echo "Straat:<input type='text' name='straat'><br>";
echo "Postcode:<input type='text' name='postcode'><br>";
echo "Plaats:<input type='text' name='plaats'><br>";
echo "Land:<input type='text' name='land'><br>";
echo "Email:<input type='text' name='email'><br>";
echo "Telefoonnummer:<input type='text' name='telefoonnummer'><br>";
echo "Kortingscode:<input type='text' name='kortingscode'><br>";
echo "Fotoproduct met formaat:<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\">";
}

?>
Je kan met een [php]if[/php]/else-statement een controle maken welke velden niet zijn ingevuld.

Doe kun je het beste in jouw situatie in de if-statement van $_FILES['file']['size'] zetten.

Alhoewel ik het zelf anders zou opbouwen.

Ik kan alles wel voor jou doen maar daar leer je niks van. Als het jouw bedoeling is om maar eenmalig een scriptje te maken omdat dit toevallig nodig is, hoop ik dat er zometeen iemand is die voor jou een kwartiertje of zo iets wil vrijmaken.
Bedankt voor je reactie :)

Het is inderdaad zo dat ik nu voor 1 keer een scriptje nodig heb. Dus als iemand voor mij even vrij kan maken om me ermee te helpen dan heel graag.
kan iemand mij alsjealsjealsjeblieft helpen??? Zou voor mij echt zo ontzettend fijn zijn. Ben echt al zo lang bezig om het goed werkend te krijgen en het lukt mij gewoon niet :(

En graag zou ik ook 'from' gewoon een vaste titel willen geven.

Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

Mag ik het HTML gedeelte van je form even zien? misschien stuurt het script bepaalde dingen niet door door de names die je gegeven hebt aan de verschillende vars!
Nou, dit is eigenlijk de gehele code .... Heb ik iets verkeerd gedaan? Had nog geen opmaak gemaakt of iets, wilde hem eerst helemaal werkend hebben.
Robert schreef op 12.02.2009 22:05
Mag ik het HTML gedeelte van je form even zien? misschien stuurt het script bepaalde dingen niet door door de names die je gegeven hebt aan de verschillende vars!
Dat staat erin? *gaap*.
Ohw, vergeet wat ik heb gezegd, na het script nog eens doorgelezen te hebben zie ik dat ik er flink naast zat ;).
Heb je het script zelf geschreven of gekopieerd en geplakt van een internetsite?
Ik kan zelf geen php schrijven, heb het script van internet en dit was de enige die het deed bij mij.

Reageren