PHP Form Maken - Errors Op Zelfde Pagina

Status
Niet open voor verdere reacties.

iKnow

Gebruiker
Lid geworden
31 aug 2012
Berichten
44
Hey!

Ik ben momenteel bezig met het maken van mijn website. En ik vind het ook belangrijk
dat mensen met mij in contact kunnen komen.

Daarom heb ik op Google verschillende PHP-Forms gevonden. Maar als je bijvoorbeeld een Field
verkeerd invult ga je eerst naar een andere pagina en krijg je daar de fout.

Ik wil dat de fout op dezelfde pagina komt alleen dan net boven het form.

Iemand die hier iets voor heeft?

Mvg, My
 
PHP:
<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!


// E-mailadres van de ontvanger
$mail_ontv = ''; // <<<----- 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($antiflood) || empty($_POST['achternaam']) ||!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($achternaam_fout))
							 echo '<p>Uw achternaam is niet ingevuld.</p>';
        elseif (!empty($email_fout))
            echo '<p>Uw e-mailadres is niet juist.</p>';
						
        else
            echo '<p>U bent uw naam, achternaam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
    }
        
  // HTML e-mail formlier
  echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
  <table><tr><td class="Contactf1">Voornaam:<sup>*</sup></td><td> <input type="text" onblur="hover2"placeholder="Voornaam" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /></td></tr>
  				<tr><td class="Contactf1">Achternaam:<sup>*</sup></td><td><input type="text" placeholder="Achternaam" id="achternaam" name="achternaam" value="' . (isset($_POST['achternaam']) ? htmlspecialchars($_POST['achternaam']) : '') . '" /></td></tr>
      		<tr><td class="Contactf1">E-mailadres:<sup>*</sup></td><td><input type="text" placeholder="E-mailadres" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /></td></tr>								 
 					<tr><td class="Contactf1">Onderwerp:<sup>*</sup></td><td><input type="text" placeholder="Onderwerp" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /></td></tr>
     			<tr><td class="Contactf1">Uw bericht of opmerking:</td><td><textarea id="bericht" placeholder="Uw bericht..." name="bericht" rows="8" style="width: 800px; height:400px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea></td></tr>
      <tr><td class="Contactf1">&nbsp;</td><td><input type="submit" name="submit" value=" Versturen " /></td></tr></table>

  </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 .= "Achternaam: " . htmlspecialchars($_POST['achternaam']) . "\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";
  

  
  $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>';
  }
}
?>
ooit ergens vandaan gehaald. weet niet meer waar maar hij werkt dacht ik wel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan