Foutief contactformulier

Hulp nodig bij je installatie of kom je ergens niet uit? Probeer phpBB3! Problemen lossen we samen met je op.
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
Forumregels
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
Gesloten
Matsko
Berichten: 1
Lid geworden op: 24 mar 2013, 11:28

Foutief contactformulier

Bericht door Matsko » 24 mar 2013, 11:38

Hallo phpBB,

Ik ben nieuw op dit forum en wil even zeggen dat het er leuk uit ziet! :)
Maar nu mijn vraag, ik ben bezig met een website te bouwen voor een goed doel. Daar moet geld voor ingezameld worden en daarom houden we acties. Voor één van die acties leek het me leuk als je je kon opgeven via de website. Ik zocht dus op google een PHP Contactformulier en veranderde deze een beetje.

Nu ben ik een beetje thuis en HTML en nog niet zo goed in PHP waardoor mij dit toch niet gelukt is. Als ik namelijk de webpagina laad komt er dit: Afbeelding

Dit is mijn script:

Code: Selecteer alles

<?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 = 'emai@website.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['aantal']) || 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, aantal, onderwerp of bijzonderheden 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="aantal">Aantal:</label><br />
      <input type="text" id="aantal" name="aantal" value="' . (isset($_POST['aantal']) ? htmlspecialchars($_POST['aantal']) : '') . '" /><br />
      
      <label for="onderwerp">Onderwerp: (in dit geval vult u 'High Tea' in)</label><br />
      <input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br />
      
      <label for="bericht">Bijzonderheden: (als dit niet van toepassing is, vult u 'niks' of 'niet van toepassing' etc in)</label><br />
      <textarea id="bericht" name="bericht" rows="8" style="width: 200px;">' . (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 .= "Opgeven High Tea " . $_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 .= "Aantal: " . htmlspecialchars($_POST['aantal']) . "\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>Uw verzoek is verzonden</h1>
      
      <p>Bedankt voor het deelnemen van deze actie.</p>';
  }
  else
  {
      echo '<h1>Uw verzoek is niet verzonden</h1>
      
      <p><b>Onze excuses.</b> Uw verzoek kon niet verzonden worden.<br>Blijft dit probleem voorkomen, neem dan contact op met <b><a href="mailto:emai@website.nl">Naam plus achternaam: emai@website.nl</a></b></p>';
  }
}
?>
Het zou fijn zijn als iemand me kon helpen!
Alvast bedankt, Bart

Gebruikersavatar
PhilipvD
Berichten: 1690
Lid geworden op: 23 feb 2008, 20:06

Re: Foutief contactformulier

Bericht door PhilipvD » 24 mar 2013, 17:04

Welkom op phpBB.nl!

Jouw vraag gaat over PHP in het algemeen, phpBB.nl is een supportforum voor de forumsoftware phpBB (gebaseerd op PHP). Wij kunnen je hier daarom helaas niet helpen. Wellicht dat je terecht kunt op een ander supportforum, specifiek voor PHP.
Gesloten.
- PhilipvD

Gesloten