HEX
Server: LiteSpeed
System:
User: ()
PHP: 7.4.33
Disabled: sendmail,mail,exec,shell_exec,dl,system,passthru,pclose,proc_open,proc_nice,proc_terminate,proc_get_status,proc_close,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,escapeshellcmd,escapeshellarg shell-exec,fpassthru,crack_check,crack_closedict,crack_getlastmessage,crack_opendict,psockopen,php_uname,symlink,ini_restore,posix_getpwuid,posix_getegid,posix_getcwd,posix_geteuid,posix_getgroups,posix_uname,posix_setuid,eval,show_source,passthru,popen,allow_url_fopen,get_current_user,getmyuid,getmygid,entre2v2,index_changer_wp,index_changer_joomla,exec_mode_1,exec_mode_2,exec_mode_3,wsoFooter,wsoEx,wsoViewSize,wsoPerms,wsoPermsColor,ukuran,tulis,ambil,tukar,entre2v2,rapih,magicboom,goaction,scookie,showstat,index_changer
Upload Files
File: /home/muratemr/theotto.tr/api/admin/logo_upload.php
<?php
declare(strict_types=1);

require_once __DIR__ . '/../../includes/db.php';
require_once __DIR__ . '/../../includes/auth.php';
require_once __DIR__ . '/../../includes/csrf.php';
require_once __DIR__ . '/../../includes/functions.php';

header('Content-Type: application/json');

require_permission('settings');
csrf_required();

$action = post_str('action');

if ($action === 'remove') {
    // Mevcut logoyu sil
    $old = db_value("SELECT value FROM site_settings WHERE `key`='site_logo'");
    if ($old) {
        $file = __DIR__ . '/../../' . ltrim($old, '/');
        if (file_exists($file)) unlink($file);
    }
    db_run("INSERT INTO site_settings (`key`, `value`) VALUES ('site_logo', '')
            ON DUPLICATE KEY UPDATE `value`=''");
    json_response(true, 'Logo kaldırıldı.');
}

// Upload
if (!isset($_FILES['logo'])) {
    json_response(false, 'Dosya bulunamadı.');
}

$file = $_FILES['logo'];
if ($file['error'] !== UPLOAD_ERR_OK) {
    json_response(false, 'Yükleme hatası: ' . $file['error']);
}

// Boyut kontrolü (2MB)
if ($file['size'] > 2 * 1024 * 1024) {
    json_response(false, 'Dosya 2MB\'dan büyük olamaz.');
}

// Tip kontrolü
$allowed_mime = ['image/png','image/jpeg','image/jpg','image/gif','image/webp','image/svg+xml'];
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime  = finfo_file($finfo, $file['tmp_name']);
finfo_close($finfo);

if (!in_array($mime, $allowed_mime)) {
    json_response(false, 'Geçersiz dosya tipi. PNG, JPG, SVG, WEBP yükleyin.');
}

// Uzantı
$ext_map = ['image/png'=>'png','image/jpeg'=>'jpg','image/jpg'=>'jpg',
            'image/gif'=>'gif','image/webp'=>'webp','image/svg+xml'=>'svg'];
$ext = $ext_map[$mime] ?? 'png';

// Kaydet
$upload_dir = __DIR__ . '/../../assets/uploads/';
if (!is_dir($upload_dir)) mkdir($upload_dir, 0755, true);

// Eski logoyu sil
$old = db_value("SELECT value FROM site_settings WHERE `key`='site_logo'");
if ($old && $old !== '') {
    $old_file = __DIR__ . '/../../' . ltrim($old, '/');
    if (file_exists($old_file)) unlink($old_file);
}

$filename  = 'logo_' . time() . '.' . $ext;
$dest      = $upload_dir . $filename;
$logo_url  = '/assets/uploads/' . $filename;

if (!move_uploaded_file($file['tmp_name'], $dest)) {
    json_response(false, 'Dosya kaydedilemedi.');
}

// DB'ye kaydet
db_run("INSERT INTO site_settings (`key`, `value`) VALUES ('site_logo', ?)
        ON DUPLICATE KEY UPDATE `value`=?", [$logo_url, $logo_url]);

json_response(true, 'Logo yüklendi.', ['url' => $logo_url]);