html formulier mailen.

Status
Niet open voor verdere reacties.

Happiej

Gebruiker
Lid geworden
20 feb 2012
Berichten
12
Beste allemaal,

Ik ben bezig een site te bouwen voor een bedrijfje wat we willen opstarten. Details doen er verder niet toe, maar ik zei van joh dan maak ik die site wel... Heb redelijk wat html/css kennis dankzij een jaar ICT opleiding te hebben gevolgd en enkele jaren daarvoor al een zelf-studie boek html te hebben gelezen e.d.

anyway, to-the-point:

Ik moet een formulier maken op de website waar mensen kaarten kunnen reserveren voor een bepaalde show. in html heb ik het formulier gemaakt, alleen nu moet het gemaild worden naar een bepaald e-mail adres. Ik wil niet dat de gebruiker na het klikken op de submit-knop naar zijn outlook wordt gestuurd. Als de gebruiker op submit drukt moet deze een bericht krijgen "uw reservering is voltooid" en dan moet er achter de schermen een e-mail worden verzonden naar het juiste adres.

Nu ben ik inmiddels erachter dat ik met cgi of PHP moet werken waarschijnlijk. Kan iemand mij verwijzen naar een site waar ze zo'n script kant-en-klaar hebben? Ik heb dit zelf nog niet kunnen vinden en heb geen zin om urenlang te gaan zitten *****n voor iets wat waarschijnlijk al door 5 miljoen mensen eerder is gemaakt... :p

Als je meer informatie nodig hebt om me te kunnen helpen hoor ik dat graag en zal die informatie dan ook graag geven.

Happiej
 
Hartelijk bedankt!

Denk dat ik het daarmee wel ga redden...

Happiej
 
Graag gedaan.

Als de vraag naar tevredenheid is beantwoord, zou je deze dan nog even op OPGELOST willen zetten.

bvd
 
Beste,

Ik heb gekeken op die site die jij voordroeg (had nu pas weer tijd om eraan te gaan werken ;)).

Het eerste deel code heb ik al .HTML opgeslagen en het tweede deel code als .php opgeslagen. Het verzenden naar de .php gaat goed, want krijg wel de echo. Alleen ziet die er als volgt uit:

Code:
Hallo $VoorNaam,

We hebben je bericht ontvangen. We zullen je indien nodig zo spoedig mogelijk een antwoord sturen.

"; } else { echo "

Sorry, maar er is iets misgegaan met het formulier, probeer het later nog eens.
"; } ?>

Verder is de enige aanpassing die ik heb gemaakt in de .php dat ik jouw@email.nl heb aangepast naar mijn eigen adres. Verder heb ik de bestanden exact zoals de code op die site is.

Doe ik iets fout? Zie ik iets over het hoofd?

Alvast bedankt voor je(jullie) tijd.

Happiej
 
zou je de volledige code even willen plaatsen, dan kan ik daar even naar kijken.

voor zover ik dit nu kan zien zit het probleem in de " die onder We staat en die achter echo staat

Ps. haal wel even je emailadres er uit.
 
contacttest.html

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html lang="nl">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8">
	<title>Formuliertje</title>
</head>
<body>
<h3>Hierbij kunt u uw gegevens invullen en versturen.</h3>
<form action="FormulierAfhandeling.php" method="post">
<p>Voornaam: <input name="VoorNaam" type="text" size="30" maxlength="80"></p>
<p>Achternaam: <input name="AchterNaam" type="text" size="30" maxlength="80"></p>
<p>Email: <input name="EmailAdres" type="text" size="30" maxlength="80"></p>
<p>Bericht: <textarea name="BeRicht" style="width: 250px; height: 40px;"></textarea></p>
<p><input name="Submit" type="submit"></p>
</form>
</body>
</html>


FormulierAfhandeling.php
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html lang="nl">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8">
	<title>formulier afhandeling</title>
</head>
<body>
<?
// Eventueel is de informatie ook in een database op te slaan
$VoorNaam = $_POST['VoorNaam'];
$AchterNaam = $_POST['AchterNaam'];
$EmailAdres = $_POST['EmailAdres'];
$BeRicht = $_POST['BeRicht'];

$formsent = mail('mijn@email.com',
		'Gegevens afkomstig van formuliertje.htm',
		"Naam: $VoorNaam $AchterNaam\r\n
		Bericht: $BeRicht",
		"From: $EmailAdres\r\nBounce-to: mijn@email.com");
if ($formsent) {
	echo "<p>Hallo $VoorNaam,<br><br> We hebben je bericht ontvangen.
	We zullen je indien nodig zo spoedig mogelijk een antwoord sturen.</p>";
	} else {
	echo "<p>Sorry, maar er is iets misgegaan met het formulier, probeer
	het later nog eens.</p>";
	}
?>
</body>
</html>

Hopelijk kan je er wat mee..
 
Ik kan helaas de fout niet ontdekken, en ben daarom aan het zoeken geweest naar een nieuwe code.

De volgen de code is een alles in 1 code en vervangt de 2 die je nu geprobeert hebt.
Sla de volgende code op als een .php bestand en zet deze op je site. (verander wel eerst het email adres op regel 17)

Deze code heb ik online getest en deze werkt goed.

Code:
<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
 
/*******************************
*        CONTACT FORMULIER                     *
*        contactformulier.php             *
*                                                             *
*        Author: Miranda Verburg         *
*        Datum: 10 september 2010     *
*                                                             *
*        Pas het e-mail adres aan     *
*        bij $mail_ontv en upload   *
*        het naar je webserver..         *
********************************/

// E-mailadres van de ontvanger
$mail_ontv = 'uwemail@adres.nl'; // <<<----- voer jouw e-mailadres hier in!

// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // naam controle
    if (empty($_POST['naam']))
        $naam_fout = 1;
    // e-mail controle
    if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
            $email_fout = 1;
    // antiflood controle
    if (!empty($_SESSION['antiflood']))
    {
        $seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
        $tijd = time() - $_SESSION['antiflood'];
        if($tijd < $seconde)
            $antiflood = 1;
    }
}

// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        if (!empty($naam_fout))
            echo '<p>Uw naam is niet ingevuld.</p>';
        elseif (!empty($email_fout))
            echo '<p>Uw e-mailadres is niet juist.</p>';
        elseif (!empty($antiflood))
            echo '<p>U mag slechts &eacute;&eacute;n bericht per ' . $seconde . ' seconde versturen.</p>';
        else
            echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
    }
        
  // HTML e-mail formlier
  echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
  <p>
  
      <label for="naam">Naam:</label><br />
      <input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br />
      
      <label for="mail">E-mailadres:</label><br />
      <input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br />
      
      <label for="onderwerp">Onderwerp:</label><br />
      <input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br />
      
      <label for="bericht">Bericht:</label><br />
      <textarea id="bericht" name="bericht" rows="8" style="width: 400px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br />
      
      <input type="submit" name="submit" value=" Versturen " />
  </p>
  </form>';
}
// versturen naar
else
{      
  // set datum
  $datum = date('d/m/Y H:i:s');
    
  $inhoud_mail = "===================================================\n";
  $inhoud_mail .= "Ingevulde contact formulier " . $_SERVER['HTTP_HOST'] . "\n";
  $inhoud_mail .= "===================================================\n\n";
  
  $inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
  $inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
  $inhoud_mail .= "Bericht:\n";
  $inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
    
  $inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
    
  $inhoud_mail .= "===================================================\n\n";
  
  // --------------------
  // spambot protectie
  // ------
  // van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
  // ------
  
  $headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';
  
  $headers = stripslashes($headers);
  $headers = str_replace('\n', '', $headers); // Verwijder \n
  $headers = str_replace('\r', '', $headers); // Verwijder \r
  $headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
  
  $_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
  $_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
  $_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
  
  if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
  {
      // zorg ervoor dat dezelfde persoon niet kan spammen
      $_SESSION['antiflood'] = time();
      
      echo '<h1>Het contactformulier is verzonden</h1>
      
      <p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
  }
  else
  {
      echo '<h1>Het contactformulier is niet verzonden</h1>
      
      <p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>';
  }
}
?>
 
Ik zal ongetwijfeld nog steeds iets niet goed doen...

Na het integreren in mijn html document van zowel het script wat je hebt gegeven als het script wat van die generator afkwam, kreeg ik het volgende resultaat:

phperror.jpg

code van de hele pagina is dus als volgt: (sommige delen eraf gehaald aosl titel e.d.)

Code:
<html>

<head>

<link rel="stylesheet" type="text/css" href="stylesheet.css" />

<title></title>

</head>

<body class="container">

<div class="header">

	 <img class="orn-left" src="images/Ornament-left.jpg" />  
	 
	 <img class="logop" src="images/klein.jpg" />
	 
	 <img class="orn-right"  src="images/Ornament-right.jpg" />
</div>

<div class="menu"> 

<li> <a href="home.html">home</a> </li>
<li> <a href="nieuws.html">Nieuws</a> </li>
<li> <a href="overons.html">Over ons</a></li>
<li> <a href="artiesten.html">Artiesten</a></li>
<li> <a href="agenda.html">Agenda</a></li>
<li> <a href="reserveringen.html">Reserveringen</a></li>
<li> <a href="producten.html">Producten</a></li>
<li> <a href="verhuur.html">Verhuur</a></li>
<li> <a href="boeken.html">Boeken</a></li>
<li> <a href="contact.html">Contact</a></li>


</div>

<div class="content">

<?php

    if(function_exists('date_default_timezone_set')) { date_default_timezone_set('Europe/Amsterdam'); }
    define('LF', "\n");

    // Get a value from the $_POST array (case insensitive!!)
    function getPost($key, $trim = false, $lowercase = false, $int = false)
    {
        if(isset($_POST[$key]))
        {
            $v = stripslashes($_POST[$key]);

            if($trim)
            {
                $v = trim($v);
            }

            if($int)
            {
                $v = intval($v);
            }
            elseif($lowercase)
            {
                $v = strtolower($v);
            }

            return $v;
        }
        
        return '';
    }

    // Default values
    $field_1 = '';
    $field_2 = '';
    $field_3 = '';

    $sHtml = '';
    $sFormError = '';

    // Process form
    if(empty($_POST['form']) == false)
    {
        $field_1 = getPost('field_1', true);
        if(strlen($field_1) == 0) { $sFormError = 'Vul a.u.b. alle verplichte velden in.'; }
        $field_2 = getPost('field_2', true);
        if(strlen($field_2) == 0) { $sFormError = 'Vul a.u.b. alle verplichte velden in.'; }
        $field_3 = getPost('field_3', true);
        if(strlen($field_3) == 0) { $sFormError = 'Vul a.u.b. alle verplichte velden in.'; }
    }

    // Show form
    if(empty($_POST['form']) || $sFormError)
    {
        $sHtml .= '<form action="" method="post">
<input name="form" type="hidden" value="form1">
<h1>Vul a.u.b. het onderstaande formulier in</h1>
' . $sFormError . '
<table border="0" cellpadding="3" cellspacing="0"><tr>
<td align="left" valign="top">Naam *</td>
<td align="left" valign="top"><input name="field_1" type="text" value="' . htmlentities($field_1) . '"></td>
</tr>
<tr>
<td align="left" valign="top">E-mail *</td>
<td align="left" valign="top"><input name="field_2" type="text" value="' . htmlentities($field_2) . '"></td>
</tr>
<tr>
<td align="left" valign="top">Berict *</td>
<td align="left" valign="top"><textarea name="field_3">' . htmlentities($field_3) . '</textarea></td>
</tr>
<tr>
<td align="left" valign="top">&nbsp;</td>
<td align="left" valign="top"><input type="submit" value="Verzenden"></td>
</table>
</form>';
    }
    else // Send form
    {
        $mail_to = 'mijneigen@e-mail.com';
        $mail_from = 'mijneigen@e-mail.com';
        $mail_subject = 'Contactformulier';
        $mail_message = 'Formuliergegevens: ' . LF . LF 
. 'Naam:                   ' . $field_1 . LF
. 'E-mail:                 ' . $field_2 . LF
. 'Berict:                 ' . $field_3 . LF
. LF 
. 'IP: ' . $_SERVER['REMOTE_ADDR'] . ', Datum: ' . date('d-m-Y') . ', Tijd: ' . date('H:i:s');

        mail($mail_to, $mail_subject, $mail_message, 'From: ' . $mail_from);

        $sHtml .= '<h1>Formulier verzonden</h1><p>Hartelijk dank voor het invullen van het formulier.</p>';
    }

    echo $sHtml;

?>  <div>


</body>

</html>


Waarschijnlijk kom ik nu heel stom over, maar van PHP heb ik echt 0 verstand...
 
Heb je deze code opgeslagen als PHP bestand?

Dit kan door bovenstaande code te kopieren en te plakken in een tekstverwerker en vervolgens op te slaan als bv. formulier.php (ik gebruik hiervoor het programma ConTEXT, wat gratis is)
Ik heb de code zoals jij die hierboven hebt neergezet, online getest en bij mij doet hij het wel.
Ondersteund jou website aanbieder PHP?

De laatste <div> moet </div> zijn

ps. je komt niet stom over, ik ben ook begonnen met html en had ook geen verstand van php.
 
Laatst bewerkt:
Bedankt voor de tip over die <div> :p

Anyway, ik gebruik crimson editor, en heb het bestand opgeslagen als .php

However, ik heb niks met een website aanbieder te maken nog, gezien deze site alleen nog op mijn lokale harde schijf staat... Dus dat kan het niet zijn...

Nog andere theorieën waarom hij niet werkt? :o
 
Hoi Happiej,
... gezien deze site alleen nog op mijn lokale harde schijf staat ...
Aha, maar lokaal werkt php niet!
Tenminste niet als je er geen php-server op hebt zitten. Heb je die, en werkt die goed?


  • PHP = pre-processing, dwz de PHP-machine op de server (van de provider, of een lokale php-server) gaat de php-codes verwerken vóórdat de pagina naar de browser wordt verzonden. Als die schakel ontbreekt, werkt het niet.

Met vriendelijke groet,
CSShunter
 
Ok... dat verklaart wel het een en ander... Het was onbekend bij mij dat PHP lokaal niet werkt...

Dan ga ik uitvogelen hoe ik een PHP servertje op mijn pc kan laten draaien!

Ik dank jullie allemaal voor jullie hulp, en ik denk dat ik zo weer een eind verder kan komen... BEDANKT! :thumb:
 
Als de vraag naar tevredenheid is beantwoord, zou je deze dan nog even op OPGELOST willen zetten.

Ik kan hier geen knop o.i.d. voor vinden? Sorry hoor ben echt nog nieuw op dit forum...

EDIT: Ik zoch op de verkeerde plek, nevermind :)
 
Laatst bewerkt:
Of probeer deze formbuilder eens, *KNIP*
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan