Hoi allemaal!

Ik heb geprobeerd een file input toe te voegen aan mijn formulier.
Krijg nu een foutmelding: unexpected else op 188 maar zie daar niets verkeerds aan..
Heb het het script al meerdere keren doorgelopen maar kom er niet uit.
Voor jullie experts zou dit daarentegen vast een makkie zijn.. HELP!


<?php

	include_once('header.php');
	require ('test2.php');
	//todo: include class met databasefuncties
	
// zodra submit wordt gedrukt, stop input in variabelen voor verificatie en verzending naar database, uitgebreid met file
if(isset($_POST['submit']) && $_FILES['formfile']['size'] > 0)	{
		$voornaam = ($_POST["Voornaam"]);
		$achternaam = ($_POST["Achternaam"]);
		$straat = ($_POST["Straat"]);
		$plaats = ($_POST["Plaats"]);
		$email = ($_POST["Email"]);
		$telefoon = ($_POST["Telefoon"]);
		$fileName = ($_FILES['formfile']['name']);
		$tmpName  = ($_FILES['formfile']['tmp_name']);
		$fileSize = ($_FILES['formfile']['size']);
		$fileType = ($_FILES['formfile']['type']);

			$fp      = fopen($tmpName, 'r');
			$content = fread($fp, filesize($tmpName));
			$content = addslashes($content);
			fclose($fp);

				if(!get_magic_quotes_gpc()){
				$fileName = addslashes($fileName);
				}
}

		
//define test input functie voor validatie, 3 soorten type input verwacht (varchar-tekst, varchar-email, int-telefoon) + restrict filename + restrict filetype
function test_input($var,$soort){
	if ($soort == 'tekst'){
		if(preg_match("/^[a-zA-Z -]*$/",$var) == FALSE)
		return FALSE;
	}elseif ($soort == 'email'){
		if(filter_var($var, FILTER_VALIDATE_EMAIL) == FALSE){
			return FALSE;
		}
	}
	elseif($soort == 'telefoon'){
	if(preg_match('/^[0-9]{10}$/',$var) == FALSE)
		return FALSE;
	}
	else {
		return TRUE;
	}
}
	
	
// create error voor als leeg, validatie ja, validatie nee, voor elke variabele. 
// todo: toevoegen errors voor bestandsvariabelen, tododo: vervangen in array voor overzichtelijkheid
$error = FALSE;
	if (empty($voornaam)) {
		$voornaamerr = "<li>Voornaam is verplicht</li>";
		$error = TRUE; 
	}
	elseif (test_input($voornaam, 'tekst') === FALSE) {
		$voornaamerr = "<li>Voornaam ongeldig</li>"; 
		$error = TRUE; 
	}
	else {
		$voornaamerr = "";
	}
	
	if (empty($achternaam)) {
		$achternaamerr = "<li>Achternaam is verplicht</li>";
		$error = TRUE;
	}
	elseif (test_input($achternaam, 'tekst') === FALSE) {
		$achternaamerr = "<li>Achternaam is ongeldig</li>";
		$error = TRUE;
	}
	else {
		$achternaamerr = "";
	}
	
	if (empty($straat)) {
		$straaterr = "<li>Straat is verplicht</li>";
		$error = TRUE;
	}
	elseif  (test_input($straat, 'tekst') === FALSE) {
		$straaterr = "<li>Straatnaam is ongeldig</li>";
		$error = TRUE;
	}
	else {
		$straaterr = "";
	}
		
	if (empty($plaats)) {
		$plaatserr = "<li>Plaats is verplicht</li>";
		$error = TRUE;
	}
	elseif  (test_input($plaats, 'tekst') === FALSE) {
		$plaatserr = "<li>Plaatsnaam is ongeldig</li>";
		$error = TRUE;
	}
	else {
		$plaatserr = "";
	}
	
	if (empty($email)) {
		$emailerr = "<li>Email is verplicht</li>";
		$error = TRUE;
	}
	elseif  (test_input($email, 'email') === FALSE) {
		$emailerr = "<li>Email is ongeldig</li>";
		$error = TRUE;
	}
	else {	
	$emailerr = "";
	}
	
	if (empty($telefoon)) {
		$telefoonerr = "<li>Telefoonnummer is verplicht</li>";
		$error = TRUE;
	}
	elseif  (test_input($telefoon, 'telefoon') === FALSE) {
		$telefoonerr = "<li>Telefoonnummer is ongeldig</li>";
		$error = TRUE;
	}
	else {
		$telefoonerr = "";	
	}
	
	if (empty($telefoon)) {
		$telefoonerr = "<li>Telefoonnummer is verplicht</li>";
		$error = TRUE;
	}
	elseif  (test_input($telefoon, 'telefoon') === FALSE) {
		$telefoonerr = "<li>Telefoonnummer is ongeldig</li>";
		$error = TRUE;
	}
	else {
		$telefoonerr = "";	
	}
	
	// controleer duplicate bestandsnaam
	if(file_exists($_FILES['formfile']['name'])) {
    $fileNameError = "<li>Bestandsnaam al in gebruik, probeer te hernoemen</li>";
	$error - TRUE;
	}
	else {
		$fileNameError = "";
	}

	// beperk bestandstype
	if($fileType !="pdf" && $fileType !="gif" && $fileType !="jpeg" && $fileType !="jpg" && $fileType !="png" && $fileType !="PDF" && $fileType !="GIF" && $fileType !="JPEG" && $fileType !="JPG" && $fileType !="PNG") {
    $fileTypeError = "<li>Ongeldig bestandstype, toegestaande bestandstypen: JPG, GIF, PNG & PDF";
	$error = TRUE;
	}
	else{
		$fileTypeError = "";
	}		

// wanneer error niet aanwezig, verwerk gegevens in database, wanneer wel, creeer error en geef deze weer via errormelding
	if(!$error){
		//todo: Doe de post shit naar database via class 

		// oude/huidige sql: insert query in losse variabelen stoppen, per databasetabel dmv loop 
		$sql1 = "INSERT INTO persoonsgegevens(voornaam,achternaam) VALUES('$voornaam','$achternaam')";
		if (mysqli_query($connection->db_connection, $sql1)) {
			
			$user_id = mysqli_insert_id($connection->db_connection);
			$sql2 = "INSERT INTO contactgegevens (email,telefoon,user_id) VALUES('$email','$telefoon','$user_id')"; 
			if (mysqli_query($connection->db_connection, $sql2)) {
		
				$sql3 = "INSERT INTO adresgegevens (straat,plaats,user_id) VALUES('$straat','$plaats','$user_id')";
				if (mysqli_query($connection->db_connection, $sql3)) {
					
					$sql4 = "INSERT INTO bijlage (bestandsnaam, bestandsgrootte, bestandstype, bestand) ". "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
						if(mysql_query($connection->db_connection,$sql4)) {
					
							echo '<p style="width:100%; padding:10px; background-color:#32beeb;color:#000000;text-align:center;">Gelukt!</p>';
							header ("Refresh: 3 url=overzicht.php"); 
						} else {
							echo "Er ging iets mis";
						}
				} else {
					echo "Er ging iets mis";
				}
			} else {
				echo "Er ging iets mis";
			} 
		}else {
			echo "Er ging iets mis";
		}
	}else {
		// create 1 errormelding voor implementatie, combineer losse errors van elke variabele string (.=) om zo en kleine, overzichtelijke PHP code in de HTML shell te krijgen
		$errormelding = '<ul>';
		if(isset($voornaamerr) && !empty($voornaamerr)){
			$errormelding .= $voornaamerr;
		}
		if(isset($achternaamerr) && !empty($achternaamerr)){
			$errormelding .=  $achternaamerr;
		}
		if(isset($straaterr) && !empty($straaterr)){
			$errormelding .=  $straaterr;
		}
		if(isset($plaatserr) && !empty($plaatserr)){
			$errormelding .=  $plaatserr;
		}
		if(isset($emailerr) && !empty($emailerr)){
			$errormelding .=  $emailerr;
		}
		if(isset($telefoonerr) && !empty($telefoonerr)){
			$errormelding .=  $telefoonerr;
		}
		if(isset($fileNameError) && !empty($fileNameError)){
			$errormelding .=  $fileNameError;
		}
		if(isset($fileTypeError) && !empty($fileTypeError)){
			$errormelding .=  $fileTypeError;
		}		
		$errormelding .= '</ul>';
	}


?>
Lijn 32 wordt niet afgelopen, dat is je functie.

Verder raad ik af om veel if-jes in elkaar te nesten!
De } op regel 188 hoort technisch bij de { op regel 32.



Tip: Zorg dat je altijd netjes inspringt Bij { en weer terug bij }.
Regel 175/176 staat niet correct ingesprongen.

Wil je al die SQL foutmeldingen sowieso wel op het scherm knallen? Een gewone gebruiker snapt er toch geen snars van, en de gebruiker die d'r wel wat van snapt weet meteen hoe je query in elkaar zit. Je opzet is nl nogal gevoelig voor SQL-injectie (vul maar eens een ' in bij een van de velden). Je kunt je foutmeldingen beter naar een log schrijven, en dat in de gaten houden. Op het scherm toon je dan hooguit iets 'er ging iets fout - probeer het later nog eens'.
Hey toppers,

Ben nu al een stukje verder volgens mij! heb de aangepaste code nu aangepast in de topic post.
Heb alleen nu weer 2 errors:
* Undefined index: formfile on line 139
* Undefined variable: fileType on line 148, (ik dacht slim te zijn door $fileType aan te passen naar ($_FILES['formfile']['type']) maar dit gaf mij alleen een verschuiving naar dezelfde undefined index van de eerste error

@Rob: Bedankt voor de tip! Aangepast!
@SanThe: Bedankt voor de tip! Aangepast!

Reageren