Preg_match in contact formulier

Status
Niet open voor verdere reacties.

JeffreyvEmpel

Gebruiker
Lid geworden
29 mrt 2013
Berichten
21
Hallo,

Ik ben bezig met een (basic) contact formulier in PHP. Nu wil ik een kenteken invoer veld maken met de volgende verplichting:

PHP:
	if(empty($kenteken)) // Als het kenteken veld niet is ingevuld
	{
		$fout = false;
	}
	elseif( !preg_match('/^[0-9\-\A-Z]{6,8}$/', $kenteken)) // Als het kenteken niet correct is ingevuld.
	{
		print '<p>U hebt uw kenteken verkeerd of onvolledig ingevuld, klik <a href = "javascript:history.back();">hier</a> om terug te gaan.</p>';
		$fout = true;
	}

Er mag in dit veld dus of niets worden ingevuld, of er moet een geldig kenteken worden ingevoerd. Echter wil ik toestaan om 6 of 8 tekens in te voeren, dus een kenteken met en zonder streepjes wordt toegestaan. Alleen zoals het script nu is {6,8}, is 6,7 of 8 tekens toegestaan.. Wat is het juiste teken in dit stukje script om aan te geven dat het "6 of 8" is en niet 6 tot en met 8.
 
kun je niet str_len($kenteken) gebruiken? ->

$kenteken_lengte = str_len($kenteken);
if($kenteken_lengte==6){ //do something for 6; }
elseif($kenteken_lengte==8){ //do something for 8; }
else{//do something else; }
 
Erict211, en hoe moet ik dat in het geheel zien? Zou je hem voor mij eens kunnen invullen in het volledige script hieronder.. (Ik ben echt een beginner qua PHP scripts..)

PHP:
<?php
$naar = 'TEST@TEST.nl'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier'; // Het onderwerp van het bericht

 
// Header instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n"; 
$headers .= "content-type: text/html;charset=utf-8\r\n";
 
if(isset($_POST['versturen'])) // Als het formulier verzonden is door op de verzend knop te klikken
{
	$voornaam = trim($_POST['voornaam']); // Alle overbodige spaties uit het voornaam veld verwijderen
	$telnr = trim($_POST['telnr']); // Alle overbodige spaties uit het telnr veld verwijderen
	$kenteken = trim($_POST['kenteken']); // Alle overbodige spaties uit het kenteken veld verwijderen
	$email = trim($_POST['email']); // Alle overbodige spaties uit het email veld verwijderen
	$bericht = trim($_POST['bericht']); // Alle overbodige spaties uit het bericht veld verwijderen
	$fout = false; // Om te kijken straks of er wat fout is
 	
	
	
	
	if(empty($voornaam)) // Als het voornaam veld niet is ingevuld
	{
		print '<p>U bent uw voornaam vergeten in te vullen, klik <a href = "javascript:history.back();">hier</a> om terug te gaan.</p>';
		$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
	}
	
	
	
	
	if(empty($telnr)) // Als het telnr veld niet is ingevuld
	{
		print '<p>U bent uw telefoonnummer vergeten in te vullen, klik <a href = "javascript:history.back();">hier</a> om terug te gaan.</p>';
		$fout = true; 
	}
	
	
	
	
	elseif( !preg_match('/^[0-9\-]{10,11}$/', $telnr)) // Als het telefoonnummer niet correct is ingevuld.
	{
		print '<p>U hebt uw telefoonnummer verkeerd of onvolledig ingevuld, klik <a href = "javascript:history.back();">hier</a> om terug te gaan.</p>';
		$fout = true;
	}	
	
	
	
	
	if(empty($kenteken)) // Als het kenteken veld niet is ingevuld
	{
		$fout = false;
	}
	elseif( !preg_match('/^[0-9\-\A-Z\a-z]{6,8}$/', $kenteken)) // Als het kenteken niet correct is ingevuld.
	{
		print '<p>U hebt uw kenteken verkeerd of onvolledig ingevuld, klik <a href = "javascript:history.back();">hier</a> om terug te gaan.</p>';
		$fout = true;
	}
	
	
	
	
	if(empty($email)) // Als het email veld niet is ingevuld
	{
		print '<p>U bent uw e-mail adres vergeten in te vullen, klik <a href = "javascript:history.back();">hier</a> om terug te gaan.</p>';
		$fout = true;
	}
	
	
	
	
	elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
	{
		print '<p>U hebt uw e-mail adres verkeerd of onvolledig ingevuld, klik <a href = "javascript:history.back();">hier</a> om terug te gaan.</p>';
		$fout = true;
	}
	
	
	
	
	if(empty($bericht)) // Als het bericht veld niet is ingevuld
	{
		print '<p>U heeft geen bericht ingevuld, klik <a href = "javascript:history.back();">hier</a> om terug te gaan.</p>';
		$fout = true;
	}
 	
	
	
	
	if($fout == false) // Als er niks fout is (alles is dus netjes ingevuld)
	{
		$headers .= 'From: ' . $voornaam . ' ' . $telnr . ' ' . $kenteken . '<' . $email . '>'; // Een afzender instellen zodat je kan reageren.
 
		if(mail($naar, $onderwerp, nl2br($bericht), $headers))
		{
			print '<p>Uw bericht is succesvol verzonden! Klik <a href = home.htm>hier</a> om verder te gaan.</p>';
		}
		else
		{
			print '<p>Er is iets mis gegaan. Uw bericht is niet verzonden, klik <a href = "javascript:history.back();">hier</a> om terug te gaan en het opnieuw te proberen.</p>';
		}
	}
}
?>
 
Eenvoudiger:
Huidig:
Code:
elseif( !preg_match('/^[0-9\-\A-Z\a-z]{6,8}$/', $kenteken)) // Als het kenteken niet correct is ingevuld.
    {


Nieuw:
Code:
elseif( !(preg_match('/^[0-9\-\A-Z\a-z]{6}$/', $kenteken) || preg_match('/^[0-9\-\A-Z\a-z]{8}$/', $kenteken) ) ) // Als het kenteken niet correct is ingevuld.
    {
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan