Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314

    Problemi scrittura File

    Salve,

    Credo di poter impazzire seduta stante.

    Premesso questo:

    Ho un bootstrap, che chiama le pagine, se non la trova mi chiama la pagina 404 e mi scrive nel registro che ha fallito l'apertura della pagina.

    Il problema è che il localhost (in questo caso) si inventa altre tre righe di codice.

    Questo è il bootstrap:

    codice:
    <?php
    
    class Bootstrap {
    
        private $_url = null;
        private $_controller = null;
        private $_controllerPath = 'controllers/'; // Cartella Controllers
        private $_modelPath = 'models/'; // Cartella Models
        private $_errorFile = 'error.php'; // File Principale degli Errori
        private $_defaultFile = 'index.php'; // File Principale
    
        /**
         * Inizializzazione Bootstrap
         */
    
        public function init() {
    
            $this->_getUrl();
            if (empty($this->_url[0])) {
                $this->_loadDefaultController();
                return false;
            }
    
            $this->_loadExistingController();
            $this->_callControllerMethod();
        }
    
        /**
         * Funzione Recupero Indirizzo Pagina 
         */
        private function _getUrl() {
            $url = isset($_GET['url']) ? $_GET['url'] : null;
            $url = rtrim($url, '/');
            $url = filter_var($url, FILTER_SANITIZE_URL);
            $this->_url = explode('/', $url);
        }
    
        /**
         * Funzione Carico Controller Predefinito  
         */
        private function _loadDefaultController() {
            require $this->_controllerPath . $this->_defaultFile;
            $this->_controller = new Index();
            $this->_controller->index();
        }
    
        /**
         * Funzione Carico controller 
         */
        private function _loadExistingController() {
            $file = $this->_controllerPath . $this->_url[0] . '.php';
            if (file_exists($file)) {
                require $file;
                $this->_controller = new $this->_url[0];
                $this->_controller->loadModel($this->_url[0], $this->_modelPath);
            } else {
                $pagina = BASE_URL . $this->_url[0];
                $errore = new errori();
                $errore->nontrovata($pagina);
    
                exit();
            }
        }
    
        /**
         * Funzione Richiamo Controller e Metodi
         * 
         *  http://localhost/controller/method/(param)/(param)/(param)
         *  url[0] = Controller
         *  url[1] = Metodo
         *  url[2] = Param
         *  url[3] = Param
         *  url[4] = Param
         */
        private function _callControllerMethod() {
            $length = count($this->_url);
    
    // Make sure the method we are calling exists
            if ($length > 1) {
                if (!method_exists($this->_controller, $this->_url[1])) {
                    $pagina = BASE_URL . $this->_url[0] . "/" . $this->_url[1];
                    $errore = new errori();
                    $errore->nontrovata($pagina);
                    exit();
                } else {
    // Determine what to load
                    switch ($length) {
                        case 5:
    //Controller->Metodo(Param1, Param2, Param3)
                            $this->_controller->{$this->_url[1]}($this->_url[2], $this->_url[3], $this->_url[4]);
                            break;
    
                        case 4:
    //Controller->Metodo(Param1, Param2)
                            $this->_controller->{$this->_url[1]}($this->_url[2], $this->_url[3]);
                            break;
    
                        case 3:
    //Controller->Metodo(Param1, Param2)
                            $this->_controller->{$this->_url[1]}($this->_url[2]);
                            break;
    
                        case 2:
    //Controller->Metodo(Param1, Param2)
                            $this->_controller->{$this->_url[1]}();
                            break;
    
                        default:
                            $this->_controller->index();
                            break;
                    }
                }
            }
        }
    
        public function setControllerPath($path) {
            $this->_controllerPath = trim($path, '/') . '/';
        }
    
        /**
         * (Optional) Set a custom path to models
         * @param string $path
         */
        public function setModelPath($path) {
            $this->_modelPath = trim($path, '/') . '/';
        }
    
        /**
         * (Optional) Set a custom path to the error file
         * @param string $path Use the file name of your controller, eg: error.php
         */
        public function setErrorFile($path) {
            $this->_errorFile = trim($path, '/');
        }
    
        /**
         * (Optional) Set a custom path to the error file
         * @param string $path Use the file name of your controller, eg: index.php
         */
        public function setDefaultFile($path) {
            $this->_defaultFile = trim($path, '/');
        }
    
    }
    
    ?>
    Questo è il controller degli errori

    codice:
    <?php
    
    /* Gestione Errori  */
    
    class errori {
    
        function __construct() {
            $vista = new view();
            $vista->css= array('errori');
        }
    /* Errore 404 Pagina non Trovata */
        
        public function nontrovata($pagina) {
                    $vista = new view();
             $vista->title = 'Errore 404: Pagina Non Trovata';
            $vista->render('errori/404', null, 1);
            $registro=new registro();
            $registro->scrivi("Apertura Pagina: $pagina non riuscita", 'errori');
    
           
        }
    }
    ?>
    e Questo il Registro
    codice:
    <?php
    class registro {
    
        private $file;
    
        function __construct() {
            
        }
    
        /**
         * Scrittura Messaggio nel Registro
         * @param string $messaggio Messaggio da Scrivere
         * @param type $file di Registro da Modificare
         */
        public function scrivi($messaggio, $file = 'omero') {
            $this->file = DROOT . "reservedarea/admin/logs/$file.log";
            setlocale(LC_ALL, 'ita', 'it_IT.utf8');
            $data = strftime("%d/%b/%Y - %H:%M:%S");
            $messaggio = "[" . $data . "] ~ $messaggio\n";
            file_put_contents($this->file, $messaggio, FILE_APPEND | LOCK_EX);
        }
    
        /**
         * Lettura File Registro
         * @param type $file File di Registro da Leggere
         * @return type $logfile Contenuto del File di Registro
         */
        public function leggi($file = 'omero') {
            
            $this->file = DROOT . "views/gestione/registro/$file.txt";
            $logfile = file_get_contents($this->file);
            $logfile = explode("\n", $logfile);
            return $logfile;
        }
    
    }
    
    ?>
    Se provo a mettere per provare nella barra degli indirizzi http://localhost/broken

    Il Registro scrive questo
    [01/feb/2013 - 11:03:45] ~ Apertura Pagina: http://localhost/broken non riuscita
    [01/feb/2013 - 11:03:45] ~ Apertura Pagina: http://localhost/public non riuscita
    [01/feb/2013 - 11:03:45] ~ Apertura Pagina: http://localhost/public non riuscita
    [01/feb/2013 - 11:03:46] ~ Apertura Pagina: http://localhost/public non riuscita
    Dove le ultime tre righe (Quelle con Public) secondo me sono totalmente inventate..

    Grazie Daniele
    Se rispondo ad una discussione è perchè so quello che dico ed ho voglia di rispondere, non per aumentare il contatore messaggi

  2. #2
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314
    Ho provato anche a scrivergliela così
    codice:
        private function _loadExistingController() {
            $file = $this->_controllerPath . $this->_url[0] . '.php';
            if (file_exists($file)) {
                require $file;
                $this->_controller = new $this->_url[0];
                $this->_controller->loadModel($this->_url[0], $this->_modelPath);
            } else {
                session::set('errorpage',$file);
                header("location: ".BASE_URL."errori/nontrovata/");
                exit();
            }
        }
    ed errori.php
    codice:
     public function nontrovata() {
                    $vista = new view();
             $vista->title = 'Errore 404: Pagina Non Trovata';
                     $vista->css= array('website','errori');
            $vista->render('errori/404', 'website');
            $registro=new registro();
            $pagina=session::get('errorpage');
            $registro->scrivi("Apertura Pagina: $pagina non riuscita", 'errori');
    
           
        }
    Sta di fatto che lui scrive 12 righe tutte allo stesso secondo:
    La prima ~ Apertura Pagina: controllers/pippo.php non riuscita corretta ed altre 11 scritte così ~ Apertura Pagina: controllers/public.php non riuscita inventate.
    Se rispondo ad una discussione è perchè so quello che dico ed ho voglia di rispondere, non per aumentare il contatore messaggi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.