PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB` REDROOM
PHP 5.6.40
Preview: router.php Size: 8.82 KB
/home/ankaservis/public_html/includes/router.php

<?php
/**
 * Router Sınıfı
 */

class Router {
    private $routes = [];
    private $params = [];

    public function __construct() {
        // Route'ları tanımla
        $this->routes = [
            // AMP Routes
            '/amp' => ['controller' => 'AmpController', 'action' => 'home'],
            '/amp/hizmetler' => ['controller' => 'AmpController', 'action' => 'services'],
            
            // Admin Routes
            '/admin' => ['controller' => 'AdminController', 'action' => 'index'],
            '/admin/login' => ['controller' => 'AdminController', 'action' => 'login'],
            '/admin/login/check' => ['controller' => 'AdminController', 'action' => 'loginCheck'],
            '/admin/logout' => ['controller' => 'AdminController', 'action' => 'logout'],
            '/admin/services' => ['controller' => 'AdminServiceController', 'action' => 'index'],
            '/admin/services/create' => ['controller' => 'AdminServiceController', 'action' => 'create'],
            '/admin/services/edit/(\d+)' => ['controller' => 'AdminServiceController', 'action' => 'edit'],
            '/admin/services/delete/(\d+)' => ['controller' => 'AdminServiceController', 'action' => 'delete'],
            '/admin/messages' => ['controller' => 'AdminMessageController', 'action' => 'index'],
            '/admin/messages/view/(\d+)' => ['controller' => 'AdminMessageController', 'action' => 'view'],
            '/admin/messages/delete/(\d+)' => ['controller' => 'AdminMessageController', 'action' => 'delete'],
            '/admin/messages/status/(\d+)' => ['controller' => 'AdminMessageController', 'action' => 'updateStatus'],
            '/admin/service-requests' => ['controller' => 'AdminServiceRequestController', 'action' => 'index'],
            '/admin/service-requests/view/(\d+)' => ['controller' => 'AdminServiceRequestController', 'action' => 'view'],
            '/admin/service-requests/delete/(\d+)' => ['controller' => 'AdminServiceRequestController', 'action' => 'delete'],
            '/admin/service-requests/status/(\d+)' => ['controller' => 'AdminServiceRequestController', 'action' => 'updateStatus'],
            '/admin/price-quotes' => ['controller' => 'AdminPriceQuoteController', 'action' => 'index'],
            '/admin/price-quotes/view/(\d+)' => ['controller' => 'AdminPriceQuoteController', 'action' => 'view'],
            '/admin/price-quotes/delete/(\d+)' => ['controller' => 'AdminPriceQuoteController', 'action' => 'delete'],
            '/admin/price-quotes/status/(\d+)' => ['controller' => 'AdminPriceQuoteController', 'action' => 'updateStatus'],
            '/admin/posts' => ['controller' => 'AdminPostController', 'action' => 'index'],
            '/admin/posts/create' => ['controller' => 'AdminPostController', 'action' => 'create'],
            '/admin/posts/edit/(\d+)' => ['controller' => 'AdminPostController', 'action' => 'edit'],
            '/admin/posts/delete/(\d+)' => ['controller' => 'AdminPostController', 'action' => 'delete'],
            '/admin/price-list' => ['controller' => 'AdminPriceListController', 'action' => 'index'],
            '/admin/price-list/create' => ['controller' => 'AdminPriceListController', 'action' => 'create'],
            '/admin/price-list/edit/(\d+)' => ['controller' => 'AdminPriceListController', 'action' => 'edit'],
            '/admin/price-list/delete/(\d+)' => ['controller' => 'AdminPriceListController', 'action' => 'delete'],
            '/admin/upload-image' => ['controller' => 'AdminUploadController', 'action' => 'image'],
            
            // Public Routes
            '/' => ['controller' => 'HomeController', 'action' => 'index'],
            '/hakkimizda' => ['controller' => 'PageController', 'action' => 'about'],
            '/hizmetler' => ['controller' => 'ServiceController', 'action' => 'index'],
            '/hizmetler/([a-z0-9-]+)' => ['controller' => 'ServiceController', 'action' => 'show'],
            '/iletisim' => ['controller' => 'ContactController', 'action' => 'index'],
            '/iletisim/gonder' => ['controller' => 'ContactController', 'action' => 'send'],
            '/iletisim/servis-formu' => ['controller' => 'ContactController', 'action' => 'servisFormu'],
            '/iletisim/servis-formu/gonder' => ['controller' => 'ContactController', 'action' => 'servisFormuGonder'],
            '/iletisim/fiyat-teklifi' => ['controller' => 'ContactController', 'action' => 'fiyatTeklifi'],
            '/iletisim/fiyat-teklifi/gonder' => ['controller' => 'ContactController', 'action' => 'fiyatTeklifiGonder'],
            '/fiyat-listesi' => ['controller' => 'PageController', 'action' => 'priceList'],
            '/sirket-bilgileri' => ['controller' => 'PageController', 'action' => 'companyInfo'],
            '/cerez-politikasi' => ['controller' => 'PageController', 'action' => 'cookiePolicy'],
            '/gizlilik-politikasi' => ['controller' => 'PageController', 'action' => 'privacyPolicy'],
            '/hizmet-sozlesmesi' => ['controller' => 'PageController', 'action' => 'termsOfService'],
            '/kullanim-kosullari' => ['controller' => 'PageController', 'action' => 'termsOfUse'],
            '/kvkk-aydinlatma-metni' => ['controller' => 'PageController', 'action' => 'kvkkNotice'],
            '/mesafeli-satis-sozlesmesi' => ['controller' => 'PageController', 'action' => 'distanceSellingContract'],
            '/cozum-merkezi' => ['controller' => 'BlogController', 'action' => 'index'],
            '/cozum-merkezi/([a-z0-9-]+)' => ['controller' => 'BlogController', 'action' => 'show'],
            '/cozum-merkezi/([a-z0-9-]+)/([a-z0-9-]+)' => ['controller' => 'BlogController', 'action' => 'showByCategory'],
            '/cozum-merkezi/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)' => ['controller' => 'BlogController', 'action' => 'showByBrand'],
            '/sitemap.xml' => ['controller' => 'SitemapController', 'action' => 'index'],
        ];
    }

    public function dispatch() {
        $uri = $this->getUri();
        
        // Public klasöründeki statik dosyaları doğrudan erişime izin ver
        if (preg_match('#^/public/#', $uri)) {
            $filePath = APP_PATH . $uri;
            if (file_exists($filePath) && is_file($filePath)) {
                // Dosya türüne göre content-type belirle
                $ext = pathinfo($filePath, PATHINFO_EXTENSION);
                $mimeTypes = [
                    'css' => 'text/css',
                    'js' => 'application/javascript',
                    'jpg' => 'image/jpeg',
                    'jpeg' => 'image/jpeg',
                    'png' => 'image/png',
                    'gif' => 'image/gif',
                    'svg' => 'image/svg+xml',
                    'webp' => 'image/webp',
                    'ico' => 'image/x-icon',
                ];
                
                if (isset($mimeTypes[$ext])) {
                    header('Content-Type: ' . $mimeTypes[$ext]);
                }
                
                readfile($filePath);
                exit;
            }
        }
        
        $matched = false;

        foreach ($this->routes as $route => $params) {
            // Route'u regex'e çevir
            $pattern = '#^' . $route . '$#';
            
            if (preg_match($pattern, $uri, $matches)) {
                $this->params = $params;
                array_shift($matches); // İlk elemanı kaldır (tam eşleşme)
                $this->params['matches'] = $matches;
                $matched = true;
                break;
            }
        }

        if (!$matched) {
            $this->notFound();
            return;
        }

        $controller = $this->params['controller'];
        $action = $this->params['action'];

        // Controller dosyasını yükle
        $controllerFile = APP_PATH . '/app/controllers/' . $controller . '.php';
        
        if (!file_exists($controllerFile)) {
            $this->notFound();
            return;
        }

        require_once $controllerFile;

        if (!class_exists($controller)) {
            $this->notFound();
            return;
        }

        $controllerInstance = new $controller();
        
        if (!method_exists($controllerInstance, $action)) {
            $this->notFound();
            return;
        }

        // Action'ı çalıştır
        call_user_func_array([$controllerInstance, $action], $this->params['matches'] ?? []);
    }

    private function getUri() {
        $uri = $_SERVER['REQUEST_URI'] ?? '/';
        
        // Query string'i kaldır
        if (($pos = strpos($uri, '?')) !== false) {
            $uri = substr($uri, 0, $pos);
        }
        
        // Trailing slash'i kaldır (ana sayfa hariç)
        $uri = rtrim($uri, '/');
        if (empty($uri)) {
            $uri = '/';
        }
        
        return $uri;
    }

    private function notFound() {
        http_response_code(404);
        $view = new View();
        $view->render('errors/404');
        exit;
    }
}

Directory Contents

Dirs: 0 × Files: 6

Name Size Perms Modified Actions
337 B lrw-r--r-- 2025-11-17 19:50:58
Edit Download
57.47 KB lrw-r--r-- 2025-11-17 19:50:58
Edit Download
4.49 KB lrw-r--r-- 2025-11-17 19:50:59
Edit Download
9.98 KB lrw-r--r-- 2025-11-17 19:50:59
Edit Download
8.82 KB lrw-r--r-- 2025-11-17 19:50:59
Edit Download
1.62 KB lrw-r--r-- 2025-11-17 19:50:59
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 REDROOM — Secure File Manager. All rights reserved. Built with ❤️ & Red Dark UI