Contacten formulier werkt niet.

Status
Niet open voor verdere reacties.

joept

Gebruiker
Lid geworden
9 okt 2007
Berichten
931
Hoi,

Alvast bedankt voor het kijken, mijn contacten formulier werkt niet. Het wordt niet verzonden, ik weet niet zelf hoe ik zoiets moet doen ik heb wel is gehoord van: post, maar dat is ook echt alles, kan iemand voor mij dit formulier in orden maken?

PHP:
        <?php

        if (!$_POST["submit"]){ ?>

        <html>
        <form type="submit">
        <table>
          <tr><td>Email:</td><td><input type="text" name="email" id="email"></td></tr>
          <tr><td>Onderwerp:</td><td><input type="text" name="subject" id="subject"></td></tr>
          <tr><td>Bericht:</td><td><textarea name="message" id="message" rows="4" cols="50"></textarea></td></tr>
          <tr><td colspan="2"><input type="submit" value="Verzenden" name="submit" id="submit"></td></tr>
        </table>
        </form>
        </html>

        <?php

        }
        else
        {

        $to = "joeptegelaar@hotmail.com";
        $from = $_POST['email'];
        $subject = $_POST['subject'];
        $message = "------------------------------\n";
        $message .= "verzonden via het contactformulier van Stefan\n";
        $message .= "---------------------------------\n\n";
        $message .= $_POST['message'];
        $headers = "From: " . $from;

        email($to, $subject, $message, $headers);
        }
        ?>

Alvast bedankt.
 
Je hebt in de form tag iets verkeerd gedaan. Er staat daar: <form type="submit"> submit is alleen geen geldig argument, je moet daar of post of get gebruiken.
Get is dat de informatie uit het veld achter de url komt de staan, bv. email.php?email=bla@bla.bla&onderwerp=blabla
Bij een post worden de waardes niet zichtbaar meeverzonden, en is daardoor iets lastiger te manipuleren.
Bij de verwerking van je script gebruik je $_POST['...'] dus het formulier moet via post verstuurt worden.
Vervang submit in de 6e regel door post en het zou moeten werken.
PHP:
<form type="post">
 
Heb ik gedaan, maar het werkt nog steeds niet, andere optie?:thumb:
 
misschien in die form tag ook nog action="..." zetten om aan te geven naar welke pagina hij moet?
 
In plaats van
PHP:
if (!$_POST["submit"]){
kan je beter gebruik maken van
PHP:
if ($_SERVER['REQUEST_METHOD'] != "POST"){
al is dat het probleem niet. Het probleem hier is (zoals je ook aan de syntaxiskleuring (ik blijf het een flutvertaling van "syntax highlighting" vinden) kunt zien) is "email" geen functie. De functie heet mail.
Dus in plaats van
PHP:
email($to, $subject, $message, $headers);
moet je
PHP:
mail($to, $subject, $message, $headers);
gebruiken.
 
simpel mail script

PHP:
<?php
if((isset($_POST["naam"]) == FALSE) OR (isset($_POST["email"]) == FALSE) OR (isset($_POST["onderwerp"]) == FALSE) OR (isset($_POST["bericht"]) == FALSE))
{
?>
<form id="form3" name="form3" method="post" action="">
<table width="501">
<tr>
<td width="20">&nbsp;</td>
<td width="80">Naam:</td>
<td width="15">*</td>
<td width="366"><input name="naam" type="text" id="naam" maxlength="45" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Emailadres:</td>
<td>*</td>
<td><input name="email" type="text" id="email" maxlength="60" /></td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td>Onderwerp:</td>
<td>*</td>
<td><input name="onderwerp" type="text" id="onderwerp" maxlength="30" /></td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td valign="top">Bericht:</td>
<td valign="top">*</td>
<td><textarea name="bericht" id="bericht" cols="45" rows="5"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input name="verzenden" type="submit" class="knop" id="verzenden" value="Verzenden" style="cursor:hand" /></td>
</tr>
</table>
</form>
PHP:
<?php
}
else
{
  function slashes($tekst)
  {
    if(get_magic_quotes_gpc() == TRUE)
    {
    $tekst = stripslashes($tekst);
    }
  return trim($tekst);
  }
 
$aan = "jouw_email_adres@hotmail.com"; 
$onderwerp = $_POST['onderwerp']; 
$body = " contact formulier\n\n";

$naam = slashes($_POST["naam"]);
$email = slashes($_POST["email"]);
$onderwerp = slashes($_POST["onderwerp"]);
$bericht = slashes($_POST["bericht"]);
$melding = "";
  if($naam == "")
  {
  $melding .= "<br>U heeft uw naam niet ingevuld";
  }
 
  if($email == "")
  {
  $melding .= "<br>U heeft uw emailadres niet ingevuld";
  }
  elseif(preg_match("/^([a-zA-Z0-9-_\\.]+)(@){1}([a-zA-Z0-9\\.-_]+)(\\.){1}([a-zA-Z]){2,3}$/Us",$email) == FALSE)
  {
  $melding .= "<br>U heeft geen geldig emailadres ingevuld";
  }
 
  if($onderwerp == "")
  {
  $melding .= "<br>U heeft geen onderwerp ingevuld";
  }

  if($bericht == "")
  {
  $melding .= "<br>U heeft geen bericht ingevuld";
  }
  
  if($melding != "")
  {
  echo "De volgende fouten zijn opgetreden:<br>";
  echo $melding;
  echo "<br>Klik <a href=\"javascript:history.go(-1)\">hier</a> om het nog eens te proberen";
  }
  else
  {
  $body .= "\nNaam: " . $naam . "\nEmail: " . $email . "\nOnderwerp: " . $onderwerp . "\nBericht: " . $bericht . "\n";

  $body .= "\n_____________________________________________\n";
  $body .= (date("d-m-y h:i:s") . "     |     " . $_SERVER["REMOTE_ADDR"]);
  $headers  = "MIME-Version: 1.0\n";
  $headers .= "Content-Type: text/plain; charset=iso-8859-1\n";
$headers .= "Fr[b][/b]om: " . $naam . " <" . $email . ">";
    if(@mail($aan,$onderwerp,$body,$headers) == FALSE)
    {
    echo "Er is een fout opgetreden.\n";
    }
    else
    {
    echo "<div align=\"center\">\n";
    echo "Bedankt voor uw bericht!<br>\n";
    echo "Indien gevraagd, nemen wij contact met u op.";
    echo "</div>\n";
    }
  }
}
?>
Hier heb je een simpel mail script, ik hoop dat je er wat aan hebt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan