Есть код php, который не пропускает формат jpeg, в чем проблема я уже понял, когда он находит формат jpeg в массиве, возвращает true и следом порядковый номер элемента, а номер элемента 0 и условие интерпретирует его как false. Как решить эту проблему?
if(isset($_POST['article-add'])) {
$imageinfo = getimagesize($_FILES['article-image']['tmp_name']);
$arr = array('image/jpeg','image/gif','image/png');
if (array_search($imageinfo['mime'],$arr)) {
echo "Такой формат есть";
echo array_search($imageinfo['mime'],$arr);
}
else {
echo "Такого формата нет";
echo array_search($imageinfo['mime'],$arr);
}
}
<form enctype="multipart/form-data" action="index.php" method="post">
<label for="article-image">Картинка статьи:</label><br>
<input type="file" id="article-image" name="article-image">
<button name="article-add" type="submit">Отправить</button>
</form>
Эта функция может возвращать как логическое значение FALSE, так и
значение не типа boolean, которое приводится к FALSE. За более
подробной информацией обратитесь к разделу Булев тип. Используйте
оператор === для проверки значения, возвращаемого этой функцией.
https://www.php.net/manual/ru/function.array-search.php
Из чего следует, что вам необходимо использовать оператор ===, а вашем случае его эквивалент НЕ равно: !==.
Ваш код:
...
if (array_search($imageinfo['mime'],$arr) !== false) {
...
Продвижение своими сайтами как стратегия роста и независимости