php formulier voor verzenden lukt niet

Status
Niet open voor verdere reacties.

bascas

Gebruiker
Lid geworden
18 mei 2006
Berichten
448
Hallo, ik ben een newbee in php, heb onderstaand html form verbouwd van een voorbeeld op internet, maar het verbouwen van bijbehorend php formulier lukt me niet. Kan iemand helpen:
HTML:
<form method="post" action="formulierverzenden.php">
<BODY BGCOLOR="#6699FF">
	<ul>
		<li>Naam vereniging *</li>
		<li><input type="text" name="naamvereniging" /></li>
		<p>Bezoekadres vereniging</p>
		<li>Adres *</li>
		<li><input type="text" name="adres" /></li>
		<li>Postcode *</li>
		<li><input type="text" name="postcode" /></li>
		<li>Plaats *</li>
		<li><input type="text" name="plaats" /></li>
		<p>Postadres vereniging</p>
		<li>Adres *</li>
		<li><input type="text" name="adres" /></li>
		<li>Postcode *</li>
		<li><input type="text" name="postcode" /></li>
		<li>Plaats *</li>
		<li><input type="text" name="plaats" /></li>
		<li>Naam contactpersoon *</li>
		<li><input type="text" name="contactpersoonnaam" /></li>
		<li>Functie contactpersoon *</li>
		<li><input type="text" name="functiecontactpersoon" /></li>
		<li>Tel.nr contactpersoon *</li>
		<li><input type="text" name="telnr" /></li>
		<li>Emailadres contactpersoon *</li>
		<li><input type="text" name="email" /></li>
		<p></p>
		<li>Bank/Girorekening vereniging *</li>
		<li><input type="text" name="rekeningnummer" /></li>
		<li>Websiteadres vereniging *</li>
		<li><input type="text" name="webadres" /></li>
		<li>Aantal active leden *</li>
		<li><input type="text" name="aantalleden" /></li>
		<li>Eventuele opmerking *</li>
		<li><textarea cols="50" rows="12" name="bericht"></textarea></li>
		<li><input type="reset" value="Begin opnieuw" /> <input type="submit" name="versturen" value="Verstuur vraag" /></li>
	</ul>
	<p>Alle velden gemarkeerd met een * zijn verplicht.
	<br>Wij nemen uw aanmelding zo spoedig mogelijk in behandeling.</br>
</form>

Groeten Bas
 
Als het probleem in het verwerken van het formulier zit dan lijkt het mij handiger dat je daarvan de code ook plaatst :)
 
Idd, lekker handig. Bijdeze. Sorry.
Gr Bas
PHP:
<?php
$naar = 'voorbeeld@gmail.com'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier (naam bedrijf)'; // Het onderwerp van het bericht
 
// Header instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n"; 
$headers .= "content-type: text/html;charset=utf-8\r\n";
 
if(isset($_POST['versturen'])) // Als het formulier verzonden is door op de verzend knop te klikken
{
	$naamvereniging = trim($_POST['naamvereniging']); // Alle overbodige spaties uit het voornaam veld verwijderen
	$adres = trim($_POST['adres']); // Alle overbodige spaties uit het achternaam veld verwijderen
	$postcode = trim($_POST['postcode']); // Alle overbodige spaties uit het email veld verwijderen
	$plaats = trim($_POST['plaats']); // Alle overbodige spaties uit het bericht veld verwijderen
	$postadres = trim($_POST['postadres']); // Alle overbodige spaties uit het achternaam veld verwijderen
	$postpostcode = trim($_POST['postpostcode']); // Alle overbodige spaties uit het email veld verwijderen
	$postplaats = trim($_POST['postplaats']); // Alle overbodige spaties uit het bericht veld verwijderen
		$contactpersoonnaam = trim($_POST['contactpersoonnaam']); // Alle overbodige spaties uit het bericht veld verwijderen
			$functiecontactpersoon = trim($_POST['functiecontactpersoon']); // Alle overbodige spaties uit het bericht veld verwijderen
			$telnr = trim($_POST['telnr']); // Alle overbodige spaties uit het bericht veld verwijderen
	$email = trim($_POST['email']); // Alle overbodige spaties uit het bericht veld verwijderen
	$rekeningnummer = trim($_POST['rekeningnummer']); // Alle overbodige spaties uit het bericht veld verwijderen
	$webadres = trim($_POST['webadres']); // Alle overbodige spaties uit het bericht veld verwijderen
	$plaats = trim($_POST['plaats']); // Alle overbodige spaties uit het bericht veld verwijderen
	$aantalleden = trim($_POST['aantalleden']); // Alle overbodige spaties uit het bericht veld verwijderen
	$fout = false; // Om te kijken straks of er wat fout is
 
	if(empty($naamvereniging)) // Als het voornaam veld niet is ingevuld
	{
		print '<p>Helaas, het naam vereniging veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
	}
	if(empty($adres)) // Als het adres veld niet is ingevuld
	{
		print '<p>Helaas, het adres veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; 
	}
	if(empty($postcode)) // Als het postcode veld niet is ingevuld
	{
		print '<p>Helaas, het postcode veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
	}
	if(empty($plaats)) // Als het plaats veld niet is ingevuld
	{
		print '<p>Helaas, het plaats veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
	}
	if(empty($postadres)) // Als het adres veld niet is ingevuld
	{
		print '<p>Helaas, het adres veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; 
	}
	if(empty($postpostcode)) // Als het postcode veld niet is ingevuld
	{
		print '<p>Helaas, het postcode veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
	}
	if(empty(post$plaats)) // Als het plaats veld niet is ingevuld
	if(empty($contactpersoonnaam) // Als het contactpersoonnaam veld niet is ingevuld
	{
		print '<p>Helaas, het naam contactpersoon veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
	}
	if(empty($functiecontactpersoon)) // Als het functie contactpersoon veld niet is ingevuld
	{
		print '<p>Helaas, het functie contactpersoon veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
	}
	if(empty($telnr)) // Als het telnr veld niet is ingevuld
	{
		print '<p>Helaas, het telefoonnummer contactpersoon veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
	}
	if(empty($email)) // Als het email veld niet is ingevuld
	{
		print '<p>Helaas, het email veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true;
	}
	if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
	{
		print '<p>Helaas, het email adres is niet correct!</p>';
		$fout = true;
	}
	if(empty($rekeningnummer)) // Als het rekeningnummer veld niet is ingevuld
	{
		print '<p>Helaas, het rekeningnummer vereniging veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
	}
	if(empty($webadres)) // Als het webadres veld niet is ingevuld
	{
		print '<p>Helaas, het webadres veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
	}
	if(empty($plaats)) // Als het plaats veld niet is ingevuld
	{
		print '<p>Helaas, het plaats veld is verplicht maar is nu niet ingevuld!</p>';
		$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
	}
	if(empty($bericht)) // Als het bericht veld niet is ingevuld
	{
		print '<p>Helaas, het bericht veld is verplicht maar is nu niet ingvuld!</p>';
		$fout = true;
	}
 
	if($fout == false) // Als er niks fout is (alles is dus netjes ingevuld)
	{
		$headers .= 'From: ' . $naamvereniging . ' ' . $adres . '<' . $email . '>'; // Een afzender instellen zodat je kan reageren.
 
		if(mail($naar, $onderwerp, nl2br($bericht), $headers))
		{
			print '<p>Uw vraag is succesvol verzonden!</p>';
		}
		else
		{
			print '<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
		}
	}
}
?>
 
Er gaan meerdere dingen niet lekker eigenlijk....

In je formulier zet je een aantal input velden waarvan bijv:
<input type="text" name="postcode" />

Deze veldnaam "postcode" gebruik je echter 2 keer in je form.
Die naam bepaalt na submit, dus in je php pagina die volgt, welke inhoud wordt toegekend aan $_POST['postcode']
Echter.... van welke postcode dan??? De eerste of de tweede?
Ik heb er heel snel overheen gekeken, maar volgens mij gebeurt dit voor andere benamingen ook.
Dus dat zal je eerst uniek moeten gaan maken.

Voor de helderheid:
De waarde van een inputfield (value) wordt meegstuurd naar de inhoud van $_POST[]
Ofwel de 'name' van inputfield moet gelijk zijn aan de naam tussen '' in $_POST[''] om die value over te kunnen brengen.

Persoonlijk zou ik ervoor kiezen om javascript te gebruiken in de pagina van je formulier.
Als dan je gebruiker submit, krijgt ie zonder dat je naar de volgende php pagina gaat al een waarschuwing dat velden ontbreken of onjuist zijn.
Voor sommige velden kun je dan in php alsnog een dubbelcheck doen indien dat gewenst is...
Maar als je nog geen kennis hebt van javascript is dit wellicht voor nu wat te hoog gegrepen. Mooier is het natuurlijk wel :-)
 
Hierbij ook nog even een mailer pagina die ik ooit eens gebouwd heb om zowel een excel als een text bestand te versturen via mail.
Let vooral even hierbij op de opmaak en volgorde van bepaalde dingen.
Hopelijk maakt dit e.e.a. wat over- / inzichtelijker voor je:

Code:
[PHP]
//Do not retrieve page from cache:
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");


//	if ($_SERVER['REQUEST_METHOD']=="POST"){

	$sender	= $_REQUEST['sendername']; //echo "sender=".$sender."<br>";
	$email_from = $_REQUEST['senderemail']; //echo "email_from=".$email_from."<br>";
	$recmail  	= $_REQUEST['mailto']; //echo "recmail=".$recmail."<br>";
	$subject  	= $_REQUEST['subject'];
	$bericht  	= $_REQUEST['comments'];
	$filename  	= $_REQUEST['justsomething'];/*only the filename*/ //echo "filename=".$filename."<br>";
	$fullpath  	= $_REQUEST['file'];/*full path plus filename*/ //echo "fullpath=".$fullpath."<br>";

//besides to Main recipient, to who else do you want to be mail sent to?
    $emailtoo= "info@example.com,".$email_from; // Who the email is send too


//additional headers at the beginning
    $headers  = "MIME-Version: 1.0\r\n"; 
    $headers .= "From: $sender <$email_from>\r\n"; 
    $headers .= "Reply-To: <$email_from>\r\n"; 
    $headers .= "Bcc: $emailtoo \r\n"; //of course you can program it as Cc too
    $headers .= "Content-Type: multipart/mixed;charset=\"iso-8859-1\"; boundary=\"todd98989810\""; 

//The message
$bericht = "Hallo, dank voor het lezen van deze email.";

//Here will be the message
    $mailBody .= "--todd98989810\n";
    $mailBody .= "Content-Type: text/plain; charset=iso-8859-1\n"; 
    $mailBody .= "Content-Transfer-Encoding: 7bit\n\n";
    $mailBody .= "$bericht\n\n";


//Here we begin with the attachments! First the xls file:

            // open the file for a binary read
            $file1 = fopen($fullpath,'rb');
 	
            // read the file content into a variable
            $data = fread($file1,filesize($fullpath));

            // now we encode it and split it into acceptable length lines
            $data = chunk_split(base64_encode($data));

    
    $mailBody .= "--todd98989810\n"; 
    $mailBody .= "Content-type: application/octet-stream; name=\"$filename\"\n"; 
    $mailBody .= "Content-disposition: attachment\n"; 
    $mailBody .= "Content-transfer-encoding: base64\n\n"; 
    $mailBody .=  $data; 
 
 
    // close the file
    fclose($file1); 
	
//Let's do this again for another attachment, but now a text file
   foreach($_FILES as $userfile){
		$tmp_name = $userfile["tmp_name"];
      		//echo "Tmp_name2&3=".$tmp_name."<br>";
      		$type = $userfile["type"];
      		$name = $userfile["name"];
      		$size = $userfile["size"];

    if (file_exists($tmp_name)){
         if(is_uploaded_file($tmp_name)){
            // open the file for a binary read
            $file2 = fopen($tmp_name,'rb');
 	
            // read the file content into a variable
            $data2 = fread($file2,filesize($tmp_name));
            //echo "Filesize=".filesize($fullpath)."<br>";

            // now we encode it and split it into acceptable length lines
            $data2 = chunk_split(base64_encode($data2));

    
    $mailBody .= "--todd98989810\n"; 
    $mailBody .= "Content-type: text/plain; name=\"$name\"\n"; 
    $mailBody .= "Content-disposition: attachment\n"; 
    $mailBody .= "Content-transfer-encoding: base64\n\n"; 
    $mailBody .=  $data2; 

 
    // close the file
    fclose($file2); 
	}
  }  
}//end of foreach

    $mailBody .= "\n\n--todd98989810--\n"; 
	
	
// send email 
    mail($recmail, $subject, $mailBody, $headers);
    echo "Mail was sent to: ".$recmail."<br>"; 


    echo "Message was sent to Recipient, with a Bcc to ".$emailtoo.".<br><br>One moment please...";
//}
?>
[/PHP]	  
	<meta http-equiv="refresh" content="3;url=index.php"  />
 
Laatst bewerkt:
Erict211, bedankt voor je antwoord. Maar het gaat boven mij pet. Ik denk dat ik toch op zoek moet naar een soort gelijk formulier en dat dan verbouwen.
Gr Bas
 
Nieuw formulier, klein probleem met de tekst

Heb inmiddels m.b.v. een formulier generator een formulier gemaakt. Het php gedeelte vind ik echt moeilijk en ik heb dat formulier sneller nodig dan ik mij erin kan verdiepen.

In het onderstaande formulier krijg ik niets terug in mijn mail als de tekst los is. Bijv: " naam vereniging" . Maar wel als het " Naam vereniging" is. Hoe kan ik het nu zo aanpassen dat het wel gebeurt als het los staat.

form.php
PHP:
<i>* Must Complete</i>
	<?=$message?>
<form id="FormName" action="send.php" method="post" name="FormName">
<table width="448" border="0" cellspacing="2" cellpadding="0">
<tr><td width = "150" align="right"><label for="EmailFrom">Your E-mail</label></td>
<td><input id="EmailFrom" type="text" name="EmailFrom" size="25"></td></tr>
<tr><td width = "150" align="right" valign="top"><label for="naamvereniging">* Naamvereniging</label></td>
<td valign="top"><input id="naamvereniging" name="naamvereniging" type="text" size="25" value="<?=$naamvereniging?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="bezoekadresvereniging">* Bezoekadresvereniging</label></td>
<td valign="top"><input id="bezoekadresvereniging" name="bezoekadresvereniging" type="text" size="25" value="<?=$bezoekadresvereniging?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="postcodebezoekadres">* Postcodebezoekadres</label></td>
<td valign="top"><input id="postcodebezoekadres" name="postcodebezoekadres" type="text" size="25" value="<?=$postcodebezoekadres?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="plaatsbezoekadres">* Plaatsbezoekadres</label></td>
<td valign="top"><input id="plaatsbezoekadres" name="plaatsbezoekadres" type="text" size="25" value="<?=$plaatsbezoekadres?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="postadres">* Postadres</label></td>
<td valign="top"><input id="postadres" name="postadres" type="text" size="25" value="<?=$postadres?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="postcode">* Postcode</label></td>
<td valign="top"><input id="postcode" name="postcode" type="text" size="25" value="<?=$postcode?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="plaats">* Plaats</label></td>
<td valign="top"><input id="plaats" name="plaats" type="text" size="25" value="<?=$plaats?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="naamcontactpersoon">* Naamcontactpersoon</label></td>
<td valign="top"><input id="naamcontactpersoon" name="naamcontactpersoon" type="text" size="25" value="<?=$naamcontactpersoon?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="functiecontactpersoon">* Functiecontactpersoon</label></td>
<td valign="top"><input id="functiecontactpersoon" name="functiecontactpersoon" type="text" size="25" value="<?=$functiecontactpersoon?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="telnrcontactpersoon">* Telnrcontactpersoon</label></td>
<td valign="top"><input id="telnrcontactpersoon" name="telnrcontactpersoon" type="text" size="25" value="<?=$telnrcontactpersoon?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="emailadrescontactpersoon">* Emailadrescontactpersoon</label></td>
<td valign="top"><input id="emailadrescontactpersoon" name="emailadrescontactpersoon" type="text" size="25" value="<?=$emailadrescontactpersoon?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="bankgirorekeningvereniging">* Bankgirorekeningvereniging</label></td>
<td valign="top"><input id="bankgirorekeningvereniging" name="bankgirorekeningvereniging" type="text" size="25" value="<?=$bankgirorekeningvereniging?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="webadresvereniging">* Webadresvereniging</label></td>
<td valign="top"><input id="webadresvereniging" name="webadresvereniging" type="text" size="25" value="<?=$webadresvereniging?>" maxlength="255"></td></tr><tr><td width = "150" align="right" valign="top"><label for="aantalactiveleden">* Aantalactiveleden</label></td>
<td valign="top"><input id="aantalactiveleden" name="aantalactiveleden" type="text" size="25" value="<?=$aantalactiveleden?>" maxlength="255"></td></tr><tr>
<td width="150"></td>
<td><input type="submit" name="submitButtonName" value="Send E-mail"></td>
</tr>
</table>
</form>

Send.php
PHP:
<?php
$EmailFrom = $_POST['EmailFrom'];
$naamvereniging = trim($_POST['naamvereniging']);
$bezoekadresvereniging = trim($_POST['bezoekadresvereniging']);
$postcodebezoekadres = trim($_POST['postcodebezoekadres']);
$plaatsbezoekadres = trim($_POST['plaatsbezoekadres']);
$postadres = trim($_POST['postadres']);
$postcode = trim($_POST['postcode']);
$plaats = trim($_POST['plaats']);
$naamcontactpersoon = trim($_POST['naamcontactpersoon']);
$functiecontactpersoon = trim($_POST['functiecontactpersoon']);
$telnrcontactpersoon = trim($_POST['telnrcontactpersoon']);
$emailadrescontactpersoon = trim($_POST['emailadrescontactpersoon']);
$bankgirorekeningvereniging = trim($_POST['bankgirorekeningvereniging']);
$webadresvereniging = trim($_POST['webadresvereniging']);
$aantalactiveleden = trim($_POST['aantalactiveleden']);


/// Validate

$message = "<h2>Error!</h2><h4>You need to fill in the following:</h4><ul>";

if($naamvereniging == ""){$message .= "<li><b>Naamvereniging</b> Not completed!"; $fail = "Y";}

if($bezoekadresvereniging == ""){$message .= "<li><b>Bezoekadresvereniging</b> Not completed!"; $fail = "Y";}

if($postcodebezoekadres == ""){$message .= "<li><b>Postcodebezoekadres</b> Not completed!"; $fail = "Y";}

if($plaatsbezoekadres == ""){$message .= "<li><b>Plaatsbezoekadres</b> Not completed!"; $fail = "Y";}

if($postadres == ""){$message .= "<li><b>Postadres</b> Not completed!"; $fail = "Y";}

if($postcode == ""){$message .= "<li><b>Postcode</b> Not completed!"; $fail = "Y";}

if($plaats == ""){$message .= "<li><b>Plaats</b> Not completed!"; $fail = "Y";}

if($naamcontactpersoon == ""){$message .= "<li><b>Naamcontactpersoon</b> Not completed!"; $fail = "Y";}

if($functiecontactpersoon == ""){$message .= "<li><b>Functiecontactpersoon</b> Not completed!"; $fail = "Y";}

if($telnrcontactpersoon == ""){$message .= "<li><b>Telnrcontactpersoon</b> Not completed!"; $fail = "Y";}

if($emailadrescontactpersoon == ""){$message .= "<li><b>Emailadrescontactpersoon</b> Not completed!"; $fail = "Y";}

if($bankgirorekeningvereniging == ""){$message .= "<li><b>Bank/girorekeningvereniging</b> Not completed!"; $fail = "Y";}

if($webadresvereniging == ""){$message .= "<li><b>Webadresvereniging</b> Not completed!"; $fail = "Y";}

if($aantalactiveleden == ""){$message .= "<li><b>Aantalactiveleden</b> Not completed!"; $fail = "Y";}

if($fail == "Y")

{

$message .= "</ul>";

include("form.php");

die();

}

///



$EmailTo = "voorbeeld@gmail.com";

$Subject = ""; /// Add a subject



$validationOK=true;

if (trim($EmailFrom)=="") $validationOK=false;

if (!$validationOK) {

  echo "Error! E-mail was not sent. Please check you code.";

  exit;

}





$Body = "";

$Body .= "Naamvereniging:\n$naamvereniging\n\n";

$Body .= "Bezoekadresvereniging:\n$bezoekadresvereniging\n\n";

$Body .= "Postcodebezoekadres:\n$postcodebezoekadres\n\n";

$Body .= "Plaatsbezoekadres:\n$plaatsbezoekadres\n\n";

$Body .= "Postadres:\n$postadres\n\n";

$Body .= "Postcode:\n$postcode\n\n";

$Body .= "Plaats:\n$plaats\n\n";

$Body .= "Naamcontactpersoon:\n$naamcontactpersoon\n\n";

$Body .= "Functiecontactpersoon:\n$functiecontactpersoon\n\n";

$Body .= "Telnrcontactpersoon:\n$telnrcontactpersoon\n\n";

$Body .= "Emailadrescontactpersoon:\n$emailadrescontactpersoon\n\n";

$Body .= "Bankgirorekeningvereniging:\n$bankgirorekeningvereniging\n\n";

$Body .= "Webadresvereniging:\n$webadresvereniging\n\n";

$Body .= "Aantalactiveleden:\n$aantalactiveleden\n\n";


if($Subject == NULL) {$Subject = "From $EmailFrom";}
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

if ($success){ echo "Success! Your e-mail was sent!";}
else{  echo "Error! Your e-mail was not sent!";}

Hoop op een oplossing.

Groet Bas
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan