Pith - miter
miter/back/admin/icons_upload.php [2.8 kb]
Modified: 17:48:38 114 026 (11 Jul 026)
14 Days Ago
<?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>";
?>
Updates
Wedge - Android 126.026
Wedge - Linux 124.026
Shim - Android 117.026
Miter - 114.026
Kerf - Android 112.026
Dev
TVShow (227) 'CSA'
TVShow (228) 'APT'
TVProgram (83) 'BXT'
Miter Update(s)
Peen (Messaging)

Menu
Calendar
Project Tin (024/029)
Miter
RSS Feed
User Avatar
@vgmlr
=SUM(parts)