Beste allemaal,

In mijn online-reserveringsformulier heb ik de controle die Frank mij heeft aangeraden overgenomen maar er gebeurt iets vreemds.
Terwijl ik controleer op verplichte velden, kun je toch het formulier leeg versturen en krijg ik dus een lege email binnen.
Ook al vul ik het formulier geheel in, krijg ik de volgende foutmeldingen:
Notice: Undefined variable: email in /www/htdocs/taxikalf/online.php on line 290

Notice: Undefined variable: naam in /www/htdocs/taxikalf/online.php on line 291

Notice: Undefined variable: naam in /www/htdocs/taxikalf/online.php on line 292

Notice: Undefined variable: adres in /www/htdocs/taxikalf/online.php on line 293

Notice: Undefined variable: woonplaats in /www/htdocs/taxikalf/online.php on line 294

Notice: Undefined variable: telefoon in /www/htdocs/taxikalf/online.php on line 295

Notice: Undefined variable: email in /www/htdocs/taxikalf/online.php on line 296

Notice: Undefined variable: opmerkingen in /www/htdocs/taxikalf/online.php on line 307

Dit zijn de regels die in de mailbody regels staan en die ook niet binnenkomen in mijn mailbox!
graag jullie idee hier over!


 <?php
	 ini_set('display_errors', 1);
     error_reporting(E_ALL);
	 include("hintbox.php");
     if(isset($_POST['Submit'])){

       // controleren of de variabele wel bestaat,dan HTML- en PHP-Tags uit de invoervelden verwijderen en posten
	 
	   if (empty($_POST['naam']) || strlen($_POST['naam'])) {
        $aErrors[] = 'U bent vergeten uw naam in te vullen.';
    }
    else {
        $naam = strip_tags($_POST['naam']);
    }
	
	if (empty($_POST['adres']) || strlen($_POST['adres'])) {
        $aErrors[] = 'U bent vergeten u adres in te vullen.';
    }
    else {
        $adres = strip_tags($_POST['adres']);
    }
	
	if (empty($_POST['woonplaats']) || strlen($_POST['woonplaats'])) {
        $aErrors[] = 'U bent vergeten uw woonplaats in te vullen.';
    }
    else {
        $woonplaats = strip_tags($_POST['woonplaats']);
    }

    if (empty($_POST['telefoon']) || strlen($_POST['telefoon'])) {
        $aErrors[] = 'U bent vergeten uw telefoonnummer in te vullen.';
    }
    else {
        $telefoon = strip_tags($_POST['telefoon']);
    }
	
	if (empty($_POST['email']) || strlen($_POST['email'])) {
        $aErrors[] = 'U bent vergeten uw emailadres in te vullen.';
    }
    else {
        $email = strip_tags($_POST['email']);
    }
	
	if(isset($_POST['aantalpersonen'])){
       $aantalpersonen = strip_tags($_POST['aantalpersonen']);
	}
    else {
       $aantalpersonen = '';
    }
	
	if(isset($_POST['datum1'])){
       $datum1 = strip_tags($_POST['datum1']);
	}
    else {
       $datum1 = '';
    }
	
	if(isset($_POST['tijd1'])){
       $tijd1 = strip_tags($_POST['tijd1']);
	}
    else {
       $tijd1 = '';
    }
	
	if(isset($_POST['retour'])){
       $retour = strip_tags($_POST['retour']);
	}   
    else {
       $retour = '';
    }
	
	if(isset($_POST['ophalen'])){
       $ophalen = strip_tags($_POST['ophalen']);
	}   
    else {
       $ophalen = '';
    }
	
	if(isset($_POST['bestemming'])){
       $bestemming = strip_tags($_POST['bestemming']);
	}  
    else {
       $bestemming = '';
    }
	
	if(isset($_POST['datum2'])){
       $datum2 = strip_tags($_POST['datum2']);
	}   
    else {
       $datum2 = '';
    }
	
	if(isset($_POST['tijd2'])){
       $tijd2 = strip_tags($_POST['tijd2']);
	 }  
    else {
       $tijd2 = '';
    }
	
	if(isset($_POST['mobiel'])){
       $mobiel = strip_tags($_POST['mobiel']);
	 }  
    else {
       $mobiel = '';
    }
	
	if(isset($_POST['vluchtnummer'])){
       $vluchtnummer = strip_tags($_POST['vluchtnummer']);
	 }  
    else {
       $vluchtnummer = '';
    }
	
	if(isset($_POST['opmerking'])){
       $opmerking = strip_tags($_POST['opmerking']);
	 }  
    else {
       $opmerking = '';
    }
	
	if(isset($_POST['contant'])){
       $contant = strip_tags($_POST['contant']);
	}   
    else {
       $contant = '';
    }
	
	if(isset($_POST['creditcard'])){
       $creditcard = strip_tags($_POST['creditcard']);
	}   
    else {
       $creditcard = '';
    }
	
	if(isset($_POST['telefonisch_bevestigen'])){
       $telefonisch_bevestigen = strip_tags($_POST['telefonisch_bevestigen']);
	}   
    else {
       $telefonisch_bevestigen = '';
    }
	
	if(isset($_POST['via_email_bevestigen'])){
       $via_email_bevestigen = strip_tags($_POST['via_email_bevestigen']);
	}   
    else {
       $via_email_bevestigen = '';
    }
       //hier wordt de datum1 samengevoegd tot 1 variabele
       $dag1 =  $_POST['dag1']; 
       $maand1 =  $_POST['maand1'];
       $jaar1 =  $_POST['jaar1'];
       $datum1 = $dag1.'-'. $maand1.'-'. $jaar1;

       //hier wordt de tijd1 samengevoegd
       $tijd1_uu =  $_POST['tijd1_uu'];
       $tijd1_mm =  $_POST['tijd1_mm'];
       $tijd1 = $tijd1_uu .':'. $tijd1_mm;

       //hier worden de datums2 samengevoegd tot 1 variabele
       $dag2 =  $_POST['dag2']; 
       $maand2 =  $_POST['maand2'];
       $jaar2 =  $_POST['jaar2'];
	   $datum2 = $dag2.'-'. $maand2.'-'. $jaar2;

       //hier wordt de tijd2 samengevoegd
       $tijd2_uu =  $_POST['tijd2_uu'];
       $tijd2_mm =  $_POST['tijd2_mm'];
       $tijd2 = $tijd2_uu .':'. $tijd2_mm;
		
		
      
       $recipient="[email protected],[email protected],[email protected],[email protected]";
       $subject="Schipholreservering Taxibedrijf Kalf";
       $header="From: " . $email . "\r\n";
       $mail_body ="Deze reservering is op " . date("d-m-Y") . " om " . date("H:i") . " uur verzonden door " .        $naam ."\n\n";
       $mail_body.="Naam: " . $naam . "\n";
       $mail_body.="Adres: " . $adres . "\n";
       $mail_body.="Woonplaats: " . $woonplaats . "\n";
       $mail_body.="Telefoonnummer: " . $telefoon . "\n";
       $mail_body.="E-mail adres: " . $email . "\n";
       $mail_body.="Aantal personen: " . $aantalpersonen . "\n";
       $mail_body.="Vertrekdatum: " . $datum1 . "\n";
       $mail_body.="Vertrektijd: " . $tijd1 . "\n";
       $mail_body.="Klant gaat ook retour: " . $retour . "\n";
       $mail_body.="Klant wil alleen worden opgehaald: " . $ophalen . "\n";
       $mail_body.="Bestemming opgehaalde klant: " . $bestemming . "\n";
       $mail_body.="Datum van aankomst: " . $datum2 . "\n";
       $mail_body.="Tijd van aankomst: " . $tijd2 . "\n";
	   $mail_body.="Mobiel telefoonnummer: " . $mobiel . "\n";
       $mail_body.="Vluchtnummer: " . $vluchtnummer . "\n";
       $mail_body.="Opmerkingen: " . $opmerkingen . "\n";
       $mail_body.="Betaald contant: " . $contant . "\n";
	   $mail_body.="Betaald met creditcard: " . $creditcard . "\n";
       $mail_body.="Bevestigen per telefoon: " . $telefonisch_bevestigen . "\n";
       $mail_body.="Bevestigen per e-mail: " . $via_email_bevestigen . "\n\n ---- Einde Schipholreservering ----";


       mail($recipient,$subject,$mail_body,$header);
       //Formulier verzonden - melden
       echo "<b><span class=\"style6\">Schipholreservering succesvol</b><br>";
       echo "<b><span class=\"style6\">wij zullen deze zo snel mogelijk bevestigen!</b><br>";
       echo "<a href=\"index.html\">Terug naar de begin pagina!</a>";
	
     }else{
     //Formulier nog niet verzonden - Formulier weergeven
	 ?>

Met behulp van een foreach loop zou je heel wat werk kunnen besparen:


<?PHP
	foreach($_POST as $input)
	{
		if(strlen($input) == 0)
		{
			echo "U bent het veld $input vergeten!";
			$veld++;
		}
	}
	
	if($veld == 0)
	{
		echo 'De email kan worden verstuurd';
	}
?>
Je checked de $_POST waarden en doet verder niks met die waarden. Verderop ga je gewoon aan de slag met de (niet bestaande) $_POST waarden. Dat kan natuurlijk niet.
Ik heb niet de hele code gemaakt, als $veld 0 is, moet de $_POST weer uitgelezen worden, dan kun je verder met het maken van een email.

Edit:
Dit script is idd behoorlijk slank, nu worden enkel de ingevulde velden gecontroleerd, daar hebben we natuurlijk niet veel aan. Ik wil alleen een tip geven over hoe je het aan zou kunnen pakken. Zou je veld voor veld afgaan, wordt het script best groot.
Om mijn fragment te laten werken, zou je van tevoren iets erin moeten zetten, dan in de foreach controleren of dat veld niet nogsteeds datgene is.
Beste Santhe,
Was dit tegen mij of tegen Marco?
Ik heb de stukjes code van Frank PG gehad, zie de topic in mysql:

if (empty($_POST['naam']) || strlen($_POST['naam'])) {
$aErrors[] = 'U bent vergeten uw naam in te vullen.';
}
else {
$naam = strip_tags($_POST['naam']);

voor de verplichte velden en :

if(isset($_POST['telefonisch_bevestigen'])){
$telefonisch_bevestigen = strip_tags($_POST['telefonisch_bevestigen']);
}
else {
$telefonisch_bevestigen = '';
voor de rest.
Ik weet ook dat alle niet verplichte velden netjes via de mail binnenkomen, maar juist de verplichte velden niet, tevens verstuurd hij toch het formulier ondanks dat je de verplichte velden leeg laat?
@Peter Arendse: Was tegen jou.
Vanaf regel 149 ga je de POST vars gewoon gebruiken of ze nou bestaan of niet.
Tip: Zet op een ontwikkelomgeving eens een heel eenvoudig formuliertje op, met 1 verplicht veld. Ga dit correct implementeren, met 1 controle. Wanneer dit is gelukt, ga je veld 2 implementeren, etc. etc. tot je alle verplichte velden er in hebt zitten.

Vervolgens ga je met de optionele velden aan de slag: 1 formulierveld aanmaken en 1 controle aanmaken. Wanneer dit goed gaat, ga je met de volgende aan de slag, etc. etc.

Ga het stap voor stap uitwerken, met de huidige aanpak kom je nergens. Het is helaas niet anders.
Ah, okay.
Ik moet nu met een noodgang naar Schiphol om klanten te halen, als ik morgen wakker wordt ga ik er direct mee beginnen.
Hartelijk dank weer voor jullie hulp tot zover.

Reageren