Pith - miter
<?php 
declare(strict_types=1);
session_start();

if (empty($_SESSION['miter'])) {
header('Location: ../../index.php');
exit;
}

$icon_dir = '../../images/icons/';
$icon_types = ['jpg', 'png', 'jpeg', 'gif'];
$allowed_mimes = ['image/jpeg', 'image/png', 'image/gif'];

// limit 2.0 mb
$icon_size = 2 * 1024 * 1024;

include 'otc.php';
$log_file = 'log.txt';

if (!empty($_FILES['iconfiles']['name']) && is_array($_FILES['iconfiles']['name'])) {
foreach ($_FILES['iconfiles']['tmp_name'] as $icon_key => $icon_egg) {
if ($_FILES['iconfiles']['error'][$icon_key] !== UPLOAD_ERR_OK) {
continue;
}

$icon_tmp = $_FILES['iconfiles']['tmp_name'][$icon_key];
$orig_name = $_FILES['iconfiles']['name'][$icon_key];
$icon_file_size = $_FILES['iconfiles']['size'][$icon_key];

$icon_ext = strtolower(pathinfo($orig_name, PATHINFO_EXTENSION));

if (in_array($icon_ext, $icon_types, true)) {

$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime_type = $finfo->file($icon_tmp);

if (in_array($mime_type, $allowed_mimes, true)) {

if ($icon_file_size < $icon_size) {

$icon_name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $orig_name);

if ($icon_name === '' || $icon_name === '.' || $icon_name === '..') {
echo "Invalid filename pattern.<br>";
continue;
}

$icon_path = $icon_dir . $icon_name;

if (move_uploaded_file($icon_tmp, $icon_path)) {
echo htmlspecialchars($icon_name, ENT_QUOTES, 'UTF-8') . " uploaded<br>";
$log_data = "{$o_date} -- Uploaded: {$icon_name}\n";
file_put_contents($log_file, $log_data, FILE_APPEND | LOCK_EX);
} else {                     
echo "Error uploading " . htmlspecialchars($icon_name, ENT_QUOTES, 'UTF-8') . "<br>";
$log_data = "{$o_date} -- Failed to upload: {$icon_name}\n";
file_put_contents($log_file, $log_data, FILE_APPEND | LOCK_EX);
}
} else { 
echo htmlspecialchars($orig_name, ENT_QUOTES, 'UTF-8') . " too large (limit 2.0mb)<br>"; 
}
} else {
echo htmlspecialchars($orig_name, ENT_QUOTES, 'UTF-8') . " content type verification failed<br>";
}
} else {
echo htmlspecialchars($orig_name, ENT_QUOTES, 'UTF-8') . " extension not allowed (jpg, jpeg, png, gif)<br>"; 
}
}
}

echo "<script>setTimeout('window.close();', 1500);</script>";
?>