I'm trying to make an if...elseif condition. But it goes only in the first condition and I really don't found what is wrong. I want to make a form for adding a new post. It must be possible to add a new post whithout a file. But in my condition the function checkFile() is always called even if the fieldset named image is empty.
Here is my code :
elseif ($_GET['action'] == 'addPost') {
if (!empty($_POST['redactor']) && !empty($_POST['title']) && !empty($_POST['content']) && isset($_FILES['image'])) {
$res = checkFile($_FILES['image']); // Checking if file is ok (function définie in controller.php)
if ($res == true) {
addPost($_POST['redactor'], $_POST['title'], $_POST['content'], $_FILES['image']['name']);
} else {
echo $imageError;
// echo "erreur dans le téléchargement";
}
}
elseif ((!empty($_POST['redactor']) && !empty($_POST['title']) && !empty($_POST['content']) && empty($_FILES['image']))) {
addPost($_POST['redactor'], $_POST['title'], $_POST['content'], NULL);
}
}
function checkFile($data) {
global $imageError;
$imageError = "";
$allowed = array("jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
$filename = $data["name"];
$filetype = $data["type"];
$filesize = $data["size"];
// Vérifie l'extension du fichier
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!array_key_exists($ext, $allowed))
$imageError .= 'Veuillez sélectionner un format de fichier valide.';
// Vérifie la taille du fichier - 5Mo maximum
$maxsize = 5 * 1024 * 1024;
if($filesize > $maxsize)
$imageError .= ' La taille du fichier est supérieure à la limite autorisée.';
// Vérifie le type MIME du fichier
if(in_array($filetype, $allowed)){
move_uploaded_file($data["tmp_name"], "./public/img/" . $data ["name"]);
return true;
} else {
$imageError .= " Veuillez réessayer.";
return false;
}
}
<?php
$title = 'ajouter-article';
ob_start(); // "mémorise" toute la sortie HTML qui suit
?>
<div class="container w-50 mt-4">
<form action="../../index.php?action=addPost" method="post" enctype="multipart/form-data">
<div>
<label for="redactor" class="form-label">Auteur</label><br>
<input type="text" id="redactor" name="redactor" class="form-control mb-3">
</div>
<div>
<label for="title" class="form-label">titre</label><br>
<input id="title" name="title" class="form-control mb-3">
</div>
<div>
<label for="content" class="form-label">article</label><br>
<textarea id="content" name="content" class="form-control mb-3" rows="5"></textarea>
</div>
<div class="mb-3">
<label for="image" class="form-label">Ajouter une image</label>
<input class="form-control" name="image" type="file" id="image">
</div>
<div>
<input type="submit" name="submit" class="btn btn-primary mb-3">
</div>
</form>
</div>
<?php $content = ob_get_clean(); ?>
<?php require('../template.php'); ?>
Does somebody see the mistake ? Thank you
Aucun commentaire:
Enregistrer un commentaire