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>';
}
?>