Hulp gevraagd, m'n php Contactformulier geeft error

Status
Niet open voor verdere reacties.

Antony29

Gebruiker
Lid geworden
14 sep 2008
Berichten
15
Hallo mensen met Antony,

Ik zit met het volgende probleem, het contactformulier op mijn website:
http://www.pcqualitybonte.nl/contactinfo.php geeft steeds mijn error pagina weer als ik het
formulier (ingevuld) probeer te verzenden.

Ik ben hier de afgelopen week al mee bezig en ik zie niet waar de fout zit, kan iemand mij misschien helpen
om dit contactformulier weer werkend te maken, ik moet hem maandag af hebben en zit er dus nogal om verlegen :$


Met vriendelijke groet, Antony Bonte.

Hieronder post ik even mailform code en het de code uit het php bestandje: "mailer.php"

HET CONTACTFORMULIER CODE:
Code:
<table width="178" height="142" border="0">
              <tr> 
                <td colspan="2"><p>&nbsp;</p>
                <p class="kop3">Contact Formulier</p></td>
              </tr>
              <tr> 
                <td>&nbsp;</td>
                <td><div align="left"> 
                  <form action="http://www.pcqualitybonte.nl/mail/mailer.php" method="post" name="form1" target="_blank" id="form1" onSubmit="MM_validateForm('voornaam','','R','achternaam','','R','straat','','R','postcode','','RisNum','postcode_nr','','R','plaats','','R','telefoon','','RisNum','email','','RisEmail');return document.MM_returnValue">
                    <div align="left"> 
                      <p>&nbsp;</p>
                      <table width="383" border="0" cellspacing="0" cellpadding="0">
                        <tr class="plaintekst"> 
                          <td height="24" colspan="3">&nbsp;U wilt graag:</td>
                        </tr>
                        <tr align="left" valign="top" class="plaintekst"> 
                          <td colspan="3"><table width="383" border="0" cellspacing="0" cellpadding="0">
                              <tr class="plaintekst"> 
                                <td width="37" height="16"><input name="offerte" type="checkbox" id="offerte" value="OFFERTE" /></td>
                                <td width="346">Een vrijblijvende offerte aanvragen.</td>
                              </tr>
                              <tr class="plaintekst"> 
                                <td height="15"><input name="informatie" type="checkbox" id="informatie" value="INFORMATIE" /></td>
                                <td>Meer informatie over tarieven etc.</td>
                              </tr>
                              <tr class="plaintekst"> 
                                <td height="16"><input name="afspraak" type="checkbox" id="afspraak" value="AFSPRAAK" /></td>
                                <td>Afspraak maken.</td>
                              </tr>
                              <tr class="plaintekst"> 
                                <td height="16"><input name="contact_opnemen" type="checkbox" id="contact_opnemen" value="CONTACT" /></td>
                                <td>Dat er contact met mij wordt opgenomen.</td>
                              </tr>
                            </table></td>
                        </tr>
                        <tr class="plaintekst"> 
                          <td height="15" colspan="3" align="left" valign="middle">&nbsp;</td>
                        </tr>
                        <tr class="plaintekst"> 
                          <td height="18">Voornaam</td>
                          <td height="18" colspan="2"><input name="voornaam" type="text" id="voornaam" size="25" /></td>
                        </tr>
                        <tr class="plaintekst"> 
                          <td width="81" height="18">Achternaam</td>
                          <td height="18" colspan="2"> <input name="achternaam" type="text" id="achternaam" size="25" /> 
                          </td>
                        </tr>
                        <tr class="plaintekst"> 
                          <td>Straat</td>
                          <td colspan="2"><input name="straat" type="text" id="straat" size="25" /></td>
                        </tr>
                        <tr class="plaintekst"> 
                          <td>Postcode</td>
                          <td colspan="2"><input name="postcode" type="text" id="postcode" size="4" maxlength="4" /> 
                            <input name="postcode_nr" type="text" id="postcode_nr" size="2" maxlength="2" /> 
                          </td>
                        </tr>
                        <tr class="plaintekst"> 
                          <td>Plaats</td>
                          <td colspan="2"><input name="plaats" type="text" id="plaats" size="25" /></td>
                        </tr>
                        <tr class="plaintekst"> 
                          <td>Telefoonnr.</td>
                          <td colspan="2"><input name="telefoon" type="text" id="telefoon" size="25" /></td>
                        </tr>
                        <tr class="plaintekst"> 
                          <td>Email</td>
                          <td colspan="2"><input name="email" type="text" id="email" size="25" /></td>
                        </tr>
                        <tr class="plaintekst"> 
                          <td valign="top">opmerkingen:</td>
                          <td colspan="2"><textarea name="opmerkingen" cols="25" id="opmerkingen"></textarea></td>
                        </tr>
                        <tr class="plaintekst"> 
                          <td>&nbsp;</td>
                          <td width="52" rowspan="2">&nbsp;</td>
                          <td width="250" rowspan="2"><input type="submit" name="Submit" value="Versturen" /> 
                            <input type="reset" name="Submit2" value="wissen" /> 
                          </td>
                        </tr>
                        <tr class="plaintekst"> 
                          <td>&nbsp;</td>
                        </tr>
                      </table>
                    </div>
                  </form>
                </div></td>
              </tr>
              <tr> 
                <td colspan="2"><div align="center">
                    <p>&nbsp;</p>
                    <p><img src="images/Plattegrond_kl.jpg" width="409" height="346"></p>
                  </div>
                </p> 
<p>&nbsp;</p><p><script language="JavaScript" type="text/javascript"> 
<!-- Begin 
if (window.print) { 
document.write('<form>  ' 
+ '<input type=button name=print value="Print Pagina" ' 
+ 'onClick="javascript:window.print()"></form>'); 
} 
// End --> 
</script></p></td>
              </tr>
            </table>


MAILER.PHP:

Code:
<?
/* Form Mailer Program */
/* Edit HTML at bottom of script for HTML output */
/* ©2000 YOA/LSYF/YoAi */

$errorpage = "error.htm";
$mailto = "info@pcqualitybonte.nl";
$required = array("subject","email","telefoon"); // what do you wish to require?

// edit below this line at your own risk

$n = 0;
do {
  $r = $required[$n];
  if(!$$r) {
  print Header("Location: $errorpage");
  exit;
  }
  $n++;
} while ($n != count($required));

$a = urldecode($QUERY_STRING);
$a = str_replace("&","\n\n",$a);
$a = str_replace("=",": ",$a);
$a = str_replace("@","_AT_",$a);
mail($mailto,$HTTP_GET_VARS["subject"],$a,"From: $mailto");
?>
<html><head><title>Mail Sent</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h2 align="center">&nbsp;</h2>
<h2 align="center"><font color="#C10061">Hartelijk dank !</font> </h2>
<p align="center">&nbsp;</p>
<h2 align="center"><font color="#000066">Uw contact formulier is met succes verzonden.</font></h2>
</body></html>
 
$n = 0;
do {
$r = $required[$n];
if(!$$r) {
header('Location: ' . $errorpage);
exit;
}
$n++;
} while ($n != count($required));

Hier kijk je of de volgende variabelen bestaan:

  • $subject
  • $email
  • $telefoon

Die bestaan niet en daarom word je doorverwezen naar je error pagina.

Het volgende lost een deel van je probleem op:

PHP:
// maak van:

$r = $required[$n];

// dit:

$r = "\$_POST['" . $required[$n] . "']";

Dat is niet de mooiste oplossing, want het werken met variabele variabelenamen is vaak verwarrend, maar bij een groot script zou het wel eens handig kunnen zijn.

Maar je kijkt dan ook of $_POST['subject'] bestaat. En die bestaat niet, dus wordt je nog naar de errorpagina doorverwezen.

Je zou dan:

PHP:
$required = array("subject","email","telefoon"); // what do you wish to require?

// kunnen veranderen in:

$required = array("email","telefoon"); // what do you wish to require?

Dan zet je onder die while loop:

PHP:
if(!isset($_POST['offerte']) && !isset($_POST['afspraak'] && !isset($_POST['informatie']) && !isset($_POST['contact_opnemen'])){
   header('Location: ' . $errorpage); // volgens mij kun je de 'print' bij een header beter weglaten.
   exit;

}
 
Hoi Erik,

Allereerst hartelijk dank voor jouwn hulp, alleen ben ik zelf niet zo thuis met dit scripten maargoed ik moet het formulier maandag werkend zien te krijgen, is de code hieronder zo goed aangepast en zou het contactformulier nu dus goed moeten werken ?

Of zou jij misschien het formulier werkend kunnen maken en mij het werkende fotmulier kunnen toezenden of hier posten? gezien jij hier wel goed in bent en ikzelf hier nog onvoldoende kennis hiervan heb en ik een beetje in tijdnood zit hiermee ?

ik zou er Enorm mee geholpen zijn en het erg waarderen

Met vriendelijk groet, Antony.

Code:
<?
/* Form Mailer Program */
/* Edit HTML at bottom of script for HTML output */
/* ©2000 YOA/LSYF/YoAi */

$errorpage = "error.htm";
$mailto = "info@pcqualitybonte.nl";
$required = array("email","telefoon");  // what do you wish to require?

// edit below this line at your own risk

$n = 0;
do {
  $r = "\$_POST['" . $required[$n] . "']";
  if(!isset($_POST['offerte']) && !isset($_POST['afspraak'] && !isset($_POST['informatie']) && !isset($_POST['contact_opnemen'])){ 
   header('Location: ' . $errorpage); // volgens mij kun je de 'print' bij een header beter weglaten. 
   exit; 

}  

  $n++;
} while ($n != count($required));

$a = urldecode($QUERY_STRING);
$a = str_replace("&","\n\n",$a);
$a = str_replace("=",": ",$a);
$a = str_replace("@","_AT_",$a);
mail($mailto,$HTTP_GET_VARS["subject"],$a,"From: $mailto");
?>
<html><head><title>Mail Sent</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h2 align="center">&nbsp;</h2>
<h2 align="center"><font color="#C10061">Hartelijk dank !</font> </h2>
<p align="center">&nbsp;</p>
<h2 align="center"><font color="#000066">Uw contact formulier is met succes verzonden.</font></h2>
</body></html>
 
Hallo Erik,

ik als ik het contact formulier test krijg ik nu steeds de melding het bestandje mailer.php "opslaan of te openen" :(

Zou jij of iemand mij alsjeblieft willen helpen dit contactformulier netjes werkend te krijgen?

Bij voorbaat, hartelijk dank

Met vriendelijke groet,
Antony
 
Hoi,

heb em even online getest het formulier en ik krijg nu de volgende foutmelding:
Code:
Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ',' or ')' in /www/htdocs/pcqualit/maileraangepast.php on line 15

Gr, Antony
 
PHP:
if(!isset($_POST['offerte']) && !isset($_POST['afspraak'] && !isset($_POST['informatie']) && !isset($_POST['contact_opnemen'])){

Was een haakje vergeten:

PHP:
if(!isset($_POST['offerte']) && !isset($_POST['afspraak']) && !isset($_POST['informatie']) && !isset($_POST['contact_opnemen'])){

Zo zou ie wel moeten werken.
 
Ik test hem gewoon online op mij server

met het test formulier op:
Code:
http://www.pcqualitybonte.nl/testmailaangepast.php

en het aangepaste testbestandje:
Code:
http://www.pcqualitybonte.nl/maileraangepast.php

maar ik krijg dus nu de error melding:
Code:
Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ',' or ')' in /www/htdocs/pcqualit/maileraangepast.php on line 15
 
ohw ok :) dankjewel ik ga het even proberen en laat ik het j zo direct weten of het werkt :thumb:
 
Hoi Erik,

Ik heb het aangepast en idd hij komt nu netjes met de pagina "Hartelijk Dank uw email is verstuurd" en ik kijg vervolgens ook een email binnen alleen staat daar niets in, geen onderwerp en geen ingevoerde gegevens uit het contactformulier.


verder geeft
Code:
http://www.pcqualitybonte.nl/testmailaangepast.php
in IE een foutmelding op de pagina
Code:
regel: 14
teken: 1
fout: object wordt verwacht
code: 0
URL: http://www.pcqualitybonte.nl/testailaangepast.php
 
I.p.v.:

PHP:
$a = urldecode($QUERY_STRING);
$a = str_replace("&","\n\n",$a);
$a = str_replace("=",": ",$a);
$a = str_replace("@","_AT_",$a);
mail($mailto,$HTTP_GET_VARS["subject"],$a,"From: $mailto");

Kun je beter het volgende doen:

PHP:
$array = array('offerte', 'informatie', 'afspraak', 'contact_opnemen');
$onderwerpen = array();

foreach($array as $id => $sub){
 $name= "\$_POST['" . $sub . "']";
 if(isset($$name){
  $onderwerpen[] = ucwords($sub);
 }
}

$onderwerpen = implode(', ', $onderwerpen);

$message = "Het volgende bericht is verstuurd vanaf: http://www.pcqualitybonte.nl \n\n";

$message .= "Onderwerp(en): ";
$message .= $onderwerpen;
$message .= "\n";
$message .= "Voornaam: ";
$message .= $_POST['voornaam'];
$message .= "\n";
$message .= "Achternaam: ";
$message .= $_POST['Achternaam'];
$message .= "\n";
$message .= "Straat: ";
$message .= $_POST['straat'];
$message .= "\n";
$message .= "Postcode: ";
$message .= $_POST['postcode'] . $_POST['postcode_nr'];
$message .= "\n";
$message .= "Plaats: ";
$message .= $_POST['plaats'];
$message .= "\n";
$message .= "Telefoon: ";
$message .= $_POST['telefoon'];
$message .= "\n";
$message .= "Email: ";
$message .= $_POST['email'];
$message .= "\n";
$message .= "Opmerkingen: ";
$message .= $_POST['opmerkingen'];
$message .= "\n";

mail($mailto, 'Mail vanaf http://www.pcqualitybonte.nl', $message, $mailto);

Dan zou het wel eens kunnen werken. Maarja, ik zou zeggen probeer het eens.
 
Laatst bewerkt:
Wat is dit voor rare constructie?
PHP:
$name= "\$_POST['" . $sub . "']";

Dit werkt lijkt mij ook wel en is aardig wat overzichtelijker.
PHP:
$name= $_POST[$sub];
 
Ok ik heb de aanpassing gemaakt zoals je zei.
Nu krijg ik de error
Code:
Parse error: syntax error, unexpected '{' in /www/htdocs/pcqualit/maileraangepast2.php on line 29
 
Ach, natuurlijk...

Typisch zo'n gevalletje van 'waar was ik mee bezig? :shocked:'...

Maar je hebt gelijk! Dank je!

Dan wordt het dus:

PHP:
foreach($array as $id => $sub){
 if(isset($_POST[$sub]){
  $onderwerpen[] = ucwords($sub);
 }
}
 
Weer een haakje vergeten...

Maak er dan dit van:

PHP:
foreach($array as $id => $sub){
 if(isset($_POST[$sub])){
  $onderwerpen[] = ucwords($sub);
 }
}

Sorry...zware nacht gehad...
 
Hoi Erik, oh dat geeft niet , ik ben al lang blij dat je me wilt helpen echt Top! Ik ga het gelijk even proberen omdat ik hem maandag werkend moet zien te krijgen :$ (hoop dat het lukt ) :)
 
Hoi Erik,
Ja hij werkt wel maar, ik krijg nu 2 emailtjes binnen, 1 lege email en 1 email van WWW deamon apache van wwwrun@mika.eatserver.nl (hierin staan wel netjes alle ingevulde gegevens.
 
Hoi Erik,

Hoe kan ik van die 2 emailtjes die ik krijg na het invullen en verzenden van het formulier (1 lege van info@pcqualit... en 1 met wel alle ingevlde gegevens, die van WWW deamon Apache: wwwrun@mika.eatserv...) reduceren tot 1 email
(evt. die van WWW deamon Apache, omdat in deze email wel alle ingevulde gegevens juist binnenkomt, die andere email is dus helemaal leeg, kan ik deze eruit krijgen of staat er nog iets niet helemaal juist in de code misschien ? zodat ik geen dubbele email krijg voor elk ingevuld mail formulier.

Als dit nog verholpen zou kunnen worden zou ik dat enorm waarderen en dan heb ik em voor morgen gelukkig toch nog klaar.

Met vriendelijke groetjes, Antony
 
Ik zal even kijken wat ik kan doen...

Weet je zeker dat je niet per ongeluk ergens in je code nog een keer de mail-functie aanroept?

Wil je nog eens de volledige code posten die je hebt? Dus die van het formulier en van de verwerking.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan