Contact formulier zendt niet.

  • Onderwerp starter Onderwerp starter cars
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

cars

Gebruiker
Lid geworden
12 jul 2007
Berichten
76
als eerst begin ik met mijn probleem dat mijn contact formulier niet verzend. en ik wil graag weten wat het probleem is.
als ik wil verzenden dan gaat hij naar mijn error.htm ik zal de code's hier neer zetten.
ik heb een contact.php/contact.htm/error.htm/ok.htm


Contact.php
PHP:
<?php

// get posted data into local variables
$EmailFrom = Trim(stripslashes($_POST['EmailFrom'])); 
$EmailTo = "carzboy@gmail.com";
$Subject = "Contact";
$Bedrijf = $_POST['Bedrijf'];
$Contactpersoon = $_POST['Contactpersoon']; 
$Onderwerp = Trim(stripslashes($_POST['Onderwerp'])); 
$Bericht = Trim(stripslashes($_POST['Bericht'])); 

// validation
$validationOK=true;
if (Trim($EmailFrom)=="") $validationOK=false;
if (Trim($Onderwerp)=="") $validationOK=false;
if (Trim($Bericht)=="") $validationOK=false;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  exit;
}

// prepare email body text
$Body .= "Bedrijf: ";
$Body .= $Bedrijf;
$Body .= "\n";
$Body .= "Contactpersoon: ";
$Body .= $Contactpersoon;
$Body .= "\n";
$Body .= "EmailFrom: ";
$Body .= $EmailFrom;
$Body .= "\n";
$Body .= "Onderwerp: ";
$Body .= $Onderwerp;
$Body .= "\n";
$Body .= "Bericht: ";
$Body .= $Bericht;

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page 
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=ok.htm\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
<form method="post" action="contact.php">
          Bedrijf:<br />
          <label>
          <input name="Bedrijf" type="text" id="$Bedrijf" />
          </label>
          <br />
		  Contactpersoon:<br />
            <label>
            <input name="Contactpersoon" type="text" id="$Contactpersoon" />
            </label>  
          <br />
          E-Mail adres:<br />
          <label>
          <input name="EmailFrom" type="text" id="$EmailFrom" />
          </label> 
          <br />
          Onderwerp:<br />
          <label>
          <input name="onderwerp" type="text" id="$Onderwerp" />
          </label>
          <br />
          Bericht:<br />
          <label>
          <textarea name="bericht" cols="120" rows="20" id="$Bericht"></textarea>
          </label>
          <br>
          <br />
          <label>
          <input type="submit" name="Submit" value="Verzenden" />
          </label>
          <input type="reset" name="Reset" value="Wis alles" />
          <br />
</form> 
</body>
</html>
 
Laatst bewerkt:
Maak eerst een commentaar van de eerste refresh. Als hij dan nog doorlinkt zit de fout in de mail functie en zul je de serverinstellingen na moeten kijken (bijvoorbeeld als je lokaal werkt). Zo niet dan zit de fout in de validatie.

Deze regels kloppen in ieder geval niet:
$Body .= "Email: ";
$Body .= $Email;
want $Email wordt nergens aangeroepen.

Of zet de uitgebreide errors aan in php om te zien wat er mis gaat.
 
Klopt dit wel?

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

moet het niet dit zijn?

$success = mail($EmailTo, $Subject, $Body, "From: <'$EmailFrom'>");

Anders moet je de variabele is laten zien dan kun je misschien zien waar het fout gaat.
 
Maak eerst een commentaar van de eerste refresh. Als hij dan nog doorlinkt zit de fout in de mail functie en zul je de serverinstellingen na moeten kijken (bijvoorbeeld als je lokaal werkt). Zo niet dan zit de fout in de validatie.

Deze regels kloppen in ieder geval niet:
$Body .= "Email: ";
$Body .= $Email;
want $Email wordt nergens aangeroepen.

Of zet de uitgebreide errors aan in php om te zien wat er mis gaat.

is het dan een oplossing dat het $EmailFrom wordt want daar moet dus wel een email komen.
 
Klopt dit wel?

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

moet het niet dit zijn?

$success = mail($EmailTo, $Subject, $Body, "From: <'$EmailFrom'>");

Anders moet je de variabele is laten zien dan kun je misschien zien waar het fout gaat.

maak het vershil uit die 2 kommatjes ?

ik hem hem op een site gezet dus je kan zien wat er gebeurt.
http://www.htmlnederland.nl/Contact.htm
ik krijg geen variable dus als ik dan wil versturen gaat die naar mijn error.htm dus ik denk dat het ligt aan // validation
 
Laatst bewerkt:
is het dan een oplossing dat het $EmailFrom wordt want daar moet dus wel een email komen.
Klopt, even wijzigen...


Bouw het script eens op vanaf hard-coded naar variabelen...

Dus dat je eerst alleen de mailfunctie gebruikt en daarin de gewenste dingen al invult.
Werkt dat dan ga je het in variabelen zetten, werkt dat -> Controle functies

Overigens heb je 2x $EmailFrom. De eerste keer controleer je $_POST['EmailFrom'] helemaal maar de 2e keer zeg je gewoon
PHP:
$EmailFrom = $_POST['EmailFrom'];
Dan heeft die controle ook niet veel zin.
 
oke dan haal ik die $EmailFrom = $_POST['EmailFrom']; weg want ik wil wel een controle hebben dat iemand iets invult anders kom ik nooit te weten wie wat vraagt. :p
ik heb de code aangepast.
 
Laatst bewerkt:
Hard-coded:
PHP:
// send email 
$success = mail('ontvanger@mail.nl', 'Onderwerp:Test', 'Dit is een test', 'From: verzender@mail.nl'); 

// redirect to success page 
if ($success){ 
  echo '<meta http-equiv="refresh" content="0;URL=ok.htm">'; 
} 
else{ 
  echo '<meta http-equiv="refresh" content="0;URL=error.htm">'; 
}

Variabelen:
PHP:
$EmailTo = 'ontvanger@mail.nl';
$EmailFrom = 'verzender@mail.nl';
$Subject = 'Onderwerp:Test';
$Body = 'Dit is een test';
$Headers = 'From: '. $EmailFrom;

// send email 
$success = mail($EmailTo, $Subject, $Body, $Headers); 

// redirect to success page 
if ($success){ 
  echo '<meta http-equiv="refresh" content="0;URL=ok.htm">'; 
} 
else{ 
  echo '<meta http-equiv="refresh" content="0;URL=error.htm">'; 
}

Werkt het dan bouw je het stap voor stap verder op.
 
hij doet het nu. alleen stuurd hij het niet naar de emailfrom maar dat is niet echt een groot probleem.
ik heb geprobeer om nog een mail string in te maken maar dat lukte niet.
hehe maar hij werkt in iedergeval. bedankt jongens!

Contact.php
PHP:
<?php 
$EmailTo = 'Carzboy@gmail.com'; 
$Subject = 'Contact';
$Bedrijf = $_POST['Bedrijf']; 
$Contactpersoon = $_POST['Contactpersoon']; 
$EmailFrom = $_POST['EmailFrom'];
$Onderwerp = $_POST['Onderwerp']; 
$Bericht = $_POST['Bericht'];

// validation 
$validationOK=true; 
if (Trim($EmailFrom)=="") $validationOK=false; 
if (Trim($Onderwerp)=="") $validationOK=false; 
if (Trim($Bericht)=="") $validationOK=false; 
if (!$validationOK) { 
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">"; 
  exit; 
} 

// prepare email body text 
$Body = "";
$Body .= "Bedrijf:"; 
$Body .= $Bedrijf; 
$Body .= "\n"; 
$Body .= "Contactpersoon:"; 
$Body .= $Contactpersoon; 
$Body .= "\n"; 
$Body .= "EmailFrom: "; 
$Body .= $EmailFrom; 
$Body .= "\n"; 
$Body .= "Onderwerp:"; 
$Body .= $Onderwerp; 
$Body .= "\n"; 
$Body .= "Bericht:"; 
$Body .= $Bericht; 
$Body .= "\n"; 

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>"); 

// redirect to success page 
if ($success){ 
  echo '<meta http-equiv="refresh" content="0;URL=ok.htm">'; 
} 
else{ 
  echo '<meta http-equiv="refresh" content="0;URL=error.htm">'; 
} 
?>
 
PHP:
<?php
$EmailTo = 'Carzboy@gmail.com';
$Subject = 'Contact';
$Bedrijf = $_POST['Bedrijf'];
$Contactpersoon = $_POST['Contactpersoon'];
$EmailFrom = $_POST['EmailFrom'];
$Onderwerp = $_POST['Onderwerp'];
$Bericht = $_POST['Bericht'];

// validation
$validationOK=true;
if (Trim($EmailFrom)=="") $validationOK=false;
if (Trim($Onderwerp)=="") $validationOK=false;
if (Trim($Bericht)=="") $validationOK=false;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  exit;
}
// Making sure the email will also be send to the contacter
$EmailTo .= ', '. $EmailFrom;

// prepare email body text
$Body = "";
$Body .= "Bedrijf:";
$Body .= $Bedrijf;
$Body .= "\n";
$Body .= "Contactpersoon:";
$Body .= $Contactpersoon;
$Body .= "\n";
$Body .= "EmailFrom: ";
$Body .= $EmailFrom;
$Body .= "\n";
$Body .= "Onderwerp:";
$Body .= $Onderwerp;
$Body .= "\n";
$Body .= "Bericht:";
$Body .= $Bericht;
$Body .= "\n";

// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page
if ($success){
  echo '<meta http-equiv="refresh" content="0;URL=ok.htm">';
}
else{
  echo '<meta http-equiv="refresh" content="0;URL=error.htm">';
}
?>
Als het goed is wordt hij met dit script ook naar degene gestuurd die het formulier verzond.
 
Mooi op tijd ;)

Zou je de status op "Opgelost" willen zetten? Alvast bedankt! :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan