Ik heb een simpel php script geschreven dat afbeeldingen upload naar de server, er een naam aan geeft, opslaat in een SQL database etc.
Dit heb ik al vaker gedaan, en er waren eigenlijk geen problemen. Het script werkte prima.
Na ongeveer 23 afbeeldingen succesvol geüpload te hebben ging het mis. Het PHP bestand werd niet meer geladen (de browser bleef laden....) Uiteindelijk verscheen er een wit scherm, geen errors of niks... Als ik het formulier verstuur, en alleen een var_dump($_POST) doe, geeft dit ook een langdurige laadtijd en uiteindelijk een witte pagina. Als ik het formulier verstuur zonder een bestand toe te voegen, is alles in orde.
- Er was nog ruimte op de server, want de eerder geüploade bestanden deden het nu ook weer.
- Omdat ik dit formulier alleen zelf gebruik, checkt PHP niet of het bestand te groot is. De upload_max_filesize is 32M (de afbeeldingen zijn allemaal ongeveer 1,5MB)
- Ik heb uiteraard niks veranderd aan het script.
Kan iemand mij helpen?
HTML FORM:
<form class="form-signin" method="post" action="includes/form/fotos.php" enctype="multipart/form-data">
<h1 class="h3 mb-3 font-weight-normal">Voeg foto's toe</h1>
<input type="hidden" name="id" value="<?php echo generateRandomString(); ?>">
<input type="file" name="fileToUpload" id="fileToUpload"><br>
<br>
<p>Past bij vraag:</p>
<select class="form-control" name="vraag">
<option>--</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
</select>
<br>
<input type="checkbox" name="containingperson[]" value="Frans">
<label>Frans</label><br>
<input type="checkbox" name="containingperson[]" value="Mia">
<label>Mia</label><br>
<input type="checkbox" name="containingperson[]" value="Wanda">
<label>Wanda</label><br>
<input type="checkbox" name="containingperson[]" value="Cecile">
<label>Cecile</label><br>
<input type="checkbox" name="containingperson[]" value="Anderen">
<label>Anderen</label><br>
<select class="form-control" id="gelegenheid" name="gelegenheid">
<option>--</option>
<?php foreach($gelegenheden as $value) {?>
<option><?php echo $value; ?></option>
<?php } ?>
<option>Anders</option>
</select><br>
<input style="display: none" id="anders_gelegenheid" class="form-control" type="text" name="anders_gelegenheid" placeholder="Gelegenheid (anders)">
<br>
<button class="btn btn-lg btn-primary btn-block" name="submit" type="submit">Opslaan</button>
</form>
PHP:
<?php
include "../dbconn.php";
$target_dir = "../uploads/fotos/";
$imageFileType = strtolower(pathinfo($_FILES["fileToUpload"]["name"],PATHINFO_EXTENSION));
$target_file = $target_dir . $_POST['id'] . "." . $imageFileType;
//Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
$vraag = $_POST['vraag'];
$personen = json_encode($_POST['containingperson']);
$gelegenheid = htmlspecialchars(stripslashes($_POST['gelegenheid']));
if ($gelegenheid == "Anders") {
$gelegenheid = htmlspecialchars(stripslashes($_POST['anders_gelegenheid']));
}
$foto = $_POST['id'] . "." . $imageFileType;
$sql = "INSERT INTO vriendenboek_fotos (`vraag`, `personen`, `gelegenheid`, `foto`) VALUES ('$vraag', '$personen', '$gelegenheid', '$foto')";
mysqli_query($conn, $sql);
header('Location: ../../fotos.php');
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>