Hallo PHPhulp-ers,

Ik weet niet goed of het bij beginners hoort, maar hier komt me vraag.

Ik heb een contact formulier met bijlage, dit functioneert goed totdat je een bijlage toevoegt. Bij een bijlage toevoegen en verzenden krijg je opeens alleen de laatste textbox mee en de bijlage en de rest van de informatie verdwijnt

Hierbij de code:

<?php

<?php
// Your e-mail adress:
$mailto = "[email protected]";

# Maximum size of attachment in bytes:
$max_attach_size = 500000;

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">;
<html>
<head>
<title>Formmailer</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<style type="text/css">
<!--
.style1 {color: #000000}
-->
</style>
</head>
<body><?php
/*if (empty($_POST['form_submitted']))
{
?></font><p><font color="black">Please fill out the form:</font></p>
<font color="black"><?php
}
*/
if (isset($_POST["form_submitted"]))
{
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$text = $_POST['text'];


unset($errors);
if ($email != "" and !preg_match("/^[^@]+@.+\.\D{2,5}$/", $email)) $errors[] = "e-mail address lijkt incorrect";
if ($text == "") $errors[] = "Geen bericht geplaatst";
if ($_FILES['probe']['size'] > $max_attach_size) $errors[] = "Bijlage is te groot(".number_format($_FILES['probe']['size']/1000,0,",","")." KB) - maximum size: ".number_format($max_attach_size/1000,0,",","")." KB";

if (empty($errors))
{
$text = stripslashes($text);
$subject = stripslashes($subject);
// if ($name != "") $mail_name=$name; else $mail_name="Unknown";
if ($subject != "") $mail_subject = "Sollicitatie " . $subject; else $mail_subject = "No subject";
if ($email != "") $mail_email = "[email protected]"; else $mail_email = "[email protected]";
$ip = $_SERVER["REMOTE_ADDR"];

// if attachment, MIME-Mail:
if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "")
{
// read and encode file:
$datei_content = fread(fopen($_FILES['probe']['tmp_name'],"r"),filesize($_FILES['probe']['tmp_name']));
$datei_content = chunk_split(base64_encode($datei_content),76,"\n");
// Boundary:
$boundary = md5(uniqid(rand()));
// Mail-Header:
$mail_header = "From: ".$mail_name." <".$mail_email.">\n";
$mail_header .= "X-Sender-IP: ".$ip."\n";
$mail_header .= "MIME-Version: 1.0\n";
$mail_header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
$mail_header .= "This is a multi-part message in MIME format.\n";



// Mail-Text:
$mail_header .= "--".$boundary;
$mail_header .= "\nContent-Type: text/plain";
$mail_header .= "\nContent-Transfer-Encoding: 8bit";



$mail_header .= "\n\n".$text ;


// Attachment:
$mail_header .= "\n--".$boundary;
$mail_header .= "\nContent-Type: ".$_FILES['probe']['type']."; name=\"".$_FILES['probe']['name']."\"";
$mail_header .= "\nContent-Transfer-Encoding: base64";
$mail_header .= "\nContent-Disposition: attachment; filename=\"".$_FILES['probe']['name']."\"";
$mail_header .= "\n\n".$datei_content;
// End:
$mail_header .= "\n--".$boundary."--";
// Sende E-Mail und gebe Fehler bzw. Bestaetigung aus
if (@mail($mailto,$mail_subject,"",$mail_header)) $sent = true; else $errors[] = "no connection to the mailserver - please try again later";
}
// no attachment, normal E-mail:
else
{
$mail_header = "From: ".$mail_name." <".$mail_email.">\n";
$mail_header .= "X-Sender-IP: $ip\n";
$mail_header .= "Content-Type: text/plain";
if (@mail($mailto,$mail_subject, "\n". $name ."\n". $Postcode ."\n". $Woonplaats ."\n". $Geboortedatum ."\n". $Telefoonnummer ."\n". $Straat ."\n". $text , $mail_header)) $sent = true; else $errors[] = "no connection to the mailserver - please try again later";
// ."\n". ."\n". ."\n". $ ."\n". ."\n".

}

// copy to sender:
if (isset($sent) && isset($email) && $email != "" && isset($_POST['copy']))
{
if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "") $copy_mail_text = "Copy of the e-mail:\n\n".$text."\n\nAttachment: ".$_FILES['probe']['name']; else $copy_mail_text = "Copy of the e-mail:\n\n".$text;
$header= "From: ".$mailto."\n";
$header .= "X-Sender-IP: ".$ip."\n";
$header .= "Content-Type: text/plain";
@mail($email, $mail_subject, $copy_mail_text, $header);
}
}
}

if (empty($sent))
{
if(isset($errors))
{
?></font><p class="caution"><font color="black">Error:</font></p><ul>
<font color="black"><?php foreach($errors as $f) { ?></font><li>
<font color="black"><?php echo $f; ?></li><?php } ?></font></ul>
<font color="black"><br /><?php
}

?></font><form method="post" action="<?php echo basename($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data"><div>
<p>


<span class="style2 style1"><font face="Verdana" size="2">Voornaam Achternaam</font></span><span class="style1"><font face="Verdana" size="2">:</font></span><font face="Verdana" size="2"></font><font color="black"><font face="Verdana" size="2"><br />
</font>
</font><font color="black">
<input name="name" value="<?php if (isset($name)) echo htmlentities(stripslashes($name)); else echo ""; ?>" size="25" style="font-family: Verdana; border: 1px solid #000000" />
<font face="Verdana" size="2">
<br /></font></font>


<font face="Verdana" size="2"><span class="style2 style1">E-mail adres:</span></font><font color="black"><font face="Verdana" size="2"><br />
</font>
</font><font color="black">
<input name="email" value="<?php if (isset($email)) echo htmlentities(stripslashes($email)); else echo ""; ?>" size="25" style="font-family: Verdana; border: 1px solid #000000" />
<font face="Verdana" size="2">
<br />
</font></font>




<font face="Verdana" size="2"><span class="style2 style1">Geboortedatum:</span></font><font color="black"><font face="Verdana" size="2"><br />
</font></font>
<font color="black">
<input name="Geboortedatum" value="<?php if (isset($Geboortedatum)) echo htmlentities(stripslashes($Geboortedatum)); else echo ""; ?>" size="25" style="font-family: Verdana; border: 1px solid #000000" />
<font face="Verdana" size="2">
<br /></font></font>



<font face="Verdana" size="2"><span class="style2 style1">Straat en huisnummer:</span></font><font color="black"><font face="Verdana" size="2"><br />
</font></font>
<font color="black">
<input name="Straat" value="<?php if (isset($Straat)) echo htmlentities(stripslashes($Straat)); else echo ""; ?>" size="25" style="font-family: Verdana; border: 1px solid #000000" />
<font face="Verdana" size="2">
<br /></font></font>

<font face="Verdana" size="2"><span class="style2 style1">Postcode:</span></font><font color="black"><font face="Verdana" size="2"><br />
</font></font>
<font color="black">
<input name="Postcode" value="<?php if (isset($Postcode)) echo htmlentities(stripslashes($Postcode)); else echo ""; ?>" size="25" style="font-family: Verdana; border: 1px solid #000000" />
<font face="Verdana" size="2">
<br /></font></font>

<font face="Verdana" size="2"><span class="style2 style1">Woonplaats:</span></font><font color="black"><font face="Verdana" size="2"><br />
</font></font>
<font color="black">
<input name="Woonplaats" value="<?php if (isset($Woonplaats)) echo htmlentities(stripslashes($Woonplaats)); else echo ""; ?>" size="25" style="font-family: Verdana; border: 1px solid #000000" />
<font face="Verdana" size="2">
<br /></font></font>

<font face="Verdana" size="2"><span class="style2 style1">Telefoonnummer:</span></font><font color="black"><font face="Verdana" size="2"><br />
</font></font>
<font color="black">
<input name="Telefoonnummer" value="<?php if (isset($Telefoonnummer)) echo htmlentities(stripslashes($Telefoonnummer)); else echo ""; ?>" size="25" style="font-family: Verdana; border: 1px solid #000000" />
<font face="Verdana" size="2">
<br /></font></font>









<font face="Verdana" size="2"><span class="style2 style1">Solliciteer op de functie:</span></font><font color="black"><font face="Verdana" size="2"><br />
</font>
</font>
<font color="black">
<input name="subject" value="<?php if (isset($subject)) echo htmlentities(stripslashes($subject)); else echo ""; ?>" size="25" style="font-family: Verdana; border: 1px solid #000000" />
<font face="Verdana" size="2">
<br />
</font></font>


<font face="Verdana" size="2">
<br />
</font></font><font face="Verdana" size="2"><span class="style2 style1">Motivatie:</span></font><font color="black"><font face="Verdana" size="2"><br />
</font>
</font><font color="black">
<textarea name="text" cols="25" rows="7" style="font-family: Verdana; border: 1px solid #000000"><?php if (isset($text)) echo htmlentities(stripslashes($text)); else echo ""; ?>
</textarea>




<font face="Verdana" size="2">
<br />
<span class="style2">Bijlagen:</span><br />
</font>
</font><font color="black">
<input type="file" name="probe" value="<?php if (isset($_POST['probe'])) echo htmlentities(stripslashes($_POST['probe'])); else echo ""; ?>" size="16" style="font-family: Verdana; border: 1px solid #000000"/>
</font> </p>
</p>
<p><font size="2">
<span class="style2"></span>
<font color="black">
<input type="submit" name="form_submitted" value="OK - Verzenden" style="font-family: Verdana; border: 1px solid #000000" /></font><font face="Verdana" size="2" color="black">
</font> </p>
</div>
</form><font color="black"><?php
}
else
{
if (empty($email)) { ?></font></font><font color="black"> </font>
<p><font color="black"><b><font face="Verdana" size="1">Bedankt</font></b><font size="1" face="Verdana"><b>!</b><br />
<span style="font-family: Calibri; font-size: 12pt;">Je bericht is met succes verzonden ik zal zo spoedig mogelijk terug mailen.</span> </font></font></p>
<font face="Verdana" size="1"><font color="black"><?php }
else { ?></font></font><font color="black"> </font>
<p><font color="black"><b><font face="Verdana" size="1">Bedankt</font></b><font size="1" face="Verdana"><b>!</b><br />
<span style="font-family: Calibri; font-size: 12pt;">Je bericht is met succes verzonden ik zal zo spoedig mogelijk terug mailen.</span> </font>
</font></p>
<font face="Verdana" size="1" color="black"><?php }
}


?>

?>

Alvast bedankt voor de reacties
Vraag 1 voor wat betreft debuggen, tot waar heb je gecontroleerd of alles nog klopt?

En dan... regels 31 t/m 34 zijn overbodig. Nergens voor nodig om de gegevens in de POST array daar te copieren. Daarnaast doe je nu ook nog eens de check verkeerd. Want eerst copieer je alles daar om vervolgens op 129 ev met isset() te controleren of de variabelen wel bestaan. Als die controlle negatief zou zijn had je op regel 31 dus al de foutmelding gekregen.
Bedankt voor je reactie.

Op dit moment gebruik ik geen debugger, wist niet eens dat het bestond voor php. graag zou ik deze willen gaan gebruiken hiervoor. Welke adviseer je mij?

Nee, ik vraag aan jou wat je al gedaan hebt. Debuggen heb je geen tool voor nodig. Dus tot waar heb je gecontroleerd of het allemaal nog goed gaat?
Het debuggen kan gedaan worden in Netbeans, dit is een IDE voor o.a PHP.

Wat ik je zelf zou aanraden is niet een los script te gebruiken maar een PHP Class (phpmailer).
Hiermee kan je gemakkelijk emails verzenden met allerlei verschillende aspecten en dat zonder hele lange pagina's van code te hebben.

:)
Mag ik je heel erg bedanken.

Ik ga is lekker knutsellen met het geen wat je me aanraad.
Deze code die gemaakt is laat ik maar vallen aangezien de fouten die er in zitten :P

Mocht het hier fout gaan of kom ik er niet uit dan trek ik aan de bel, als dat goed is.
@star moon
Heb je enig idee waarom ik de vraag stelde die ik stelde? Volgens mij niet. Een tool kan niets voor je doen als je niet weet wat je moet doen.

Reageren