Jump to content
Fórum Script Brasil
  • 0

Problema com hospedador.


Question

Olá galera tou com um projeto.

porém eu fiz um ambiente proprio em MVC.

tava usando url amigavel.

Meu .htaccess é esse abaixo:

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1
e o meu arquivo que pega os paramentros passados via url é esse
<?php



// var $_url // SALVA O PARAMETRO PASSADO NA URL
// var $_explode // SEPARA CADA PARAMETRO POR "/"
// var $_controller // SALVA O PRIMERO PARAMETRO COMO CONTROLLER ex. www.site.com/index
// $_controller = index
// var $_action // SALVA O SEGUNDO PARAMENTRO COMO AÇÃO e EXECUTA A FUNÇÃO ex. www.site.com/produto/cadastrar
// $_actio = cadastrar() 


    class System{
        private $_url;
        private $_explode;
        public $_controller;
        public $_action;
        public $_params;
        public $_timezone;
//CONSTRUTOR
        
        public function  __construct(){
            $this->setUrl();
            $this->setExplode();
            $this->setController();
            $this->setAction();
            $this->setParams();
        }

        
//FUNÇÃO PARA VALIDAR E ATRIBUIR OS PARAMETROS padrão PASSADO NA URL
        private function setUrl(){
            $_GET['url'] = (isset($_GET['url']) ? $_GET['url'] : 'index/index_action');
  //SE $_GET['url'] tiver em branco então por padrão $_GET['url] = index/index_action          
            
            $this->_url = $_GET['url'] .'/';
          
        }
   
  //SEPARA A URL POR "/" NUM ARRAY explode[] ex: controle / action    
        private function setExplode(){
            $this->_explode = explode( '/' , $this->_url );
        }
// ATRIBUI O PRIMEIRO VALOR DO PRIMEIRO INDICE EM _controller 
        
        private function setController(){
            $this->_controller = $this->_explode[0];
        }
//VALIDA E ATRIBUI O SEGUNDO VALOR COMO ACTION _action        
        private function setAction(){
            $ac = (!isset($this->_explode[1]) || $this->_explode[1] == null || $this->_explode[1] == 'index' ? 'index_action' : $this->_explode[1]);
            $this->_action = $ac;
        }

//ADICIONA OS VALORES JÁ VALIDADOS EM 2 ARRAYS e EM SEGUIDA OS COMBINA
// O PRIMEIRO VALOR (IMPAR) vai ser o Index
// O SEGUNDO VALOR (PAR) vai ser o valor do index
// inds[] e value[]        
        private function setParams(){
            unset( $this->_explode[0], $this->_explode[1] );
            //print_r($this->_explode);
            array_pop( $this->_explode );
            
            if ( end( $this->_explode ) == null )
                array_pop( $this->_explode );

            $i = 0;
            if( !empty ($this->_explode) ){
                foreach ( $this->_explode as $val ){
                    if ( $i % 2 == 0 ){   
                        $ind[] = $val; //Exp.. Se _explode[N] for impar então fica com indice
                    }else{
                        $value[] = $val; //Exp.. Se _explode[N] for par então fica com valor
                    }
                    $i++;
                }
            }else{
                $ind = array();  //Se não tiver nada. Array em branco
                $value = array();
            }
           //FAZ A JUNÇÃO DOS ARRAYS 
           //SE A QTD DE IND FOR = A QTD DO VALOR, COMBINA
           //SE NÃO ARRAY EM BRANCO
            
            if( count($ind) == count($value) && !empty($ind) && !empty($value) ) 
              ( $this->_params = array_combine($ind, $value));
            
              else
                $this->_params = array();
        }

        public function getParam( $name = null ){
            if ( $name != null )
                if (array_key_exists ($name, $this->_params))
                        return $this->_params[$name];
                else 
                    return false;
            else
                return $this->_params;
        }
        
        
        //FUNÇÂO QUE CARREGARÁ OS CONTROLLERS E ACTIONS

        public function run(){
            $redi = new redirectorHelper();
            $controller_path = CONTROLLERS . $this->_controller . 'Controller.php';
            if( !file_exists( $controller_path ) )
               // echo $this->_controller.'<br/>';
               // echo $controller_path;
                
                $redi->goToControllerAction('index','erro');

            require_once( $controller_path );
            $app = new $this->_controller();

                if( !method_exists($app, $this->_action) )
                    $redi->goToControllerAction('index','erro');

            $action = $this->_action;
            $app->init();
            $app->$action();
        }
    }
Minha classe indexController filha da classe Controller
<?php
//CLASSE CONTROLADORA DO INDEX (PÁGINA PRINCIPAL) 

class index extends Controller {
    private $auth;
    private $redi;
    
//FUNÇÃO QUE INICIA ANTES DE TUDO    
    public function init(){
    
    }
    
    
//FUNÇÃO QUE CHAMA A PAGINA PRINCIPAL     
    public function index_action(){


//vai chamar o arquivo index.phtml na pasta view
 $this->view('index');
    }
    
}
A classe controller só tem uma função que chama as views. então não precisa postar. Eu criando outro controller por exemplo.. loginController localmente eu consigo accessar por exemplo localhost/site/login/ ele vai automaticamente para a index_action e chama a view login.. porém quando eu rodo num servidor online, 00webhost, não funciona da página encontrada porque????w saka ai como ta meu index.php que vai chamara todos os arquivos..
session_start();


//DEFININDO CONSTANTES COM OS CAMINHOS DE CADA ARQUIVO A SER CHAMADO


define('CONTROLLERS', 'app/controller/');
define('VIEWS', 'app/views/');
define('HELPERS', 'system/helpers/');
define('MODELS', 'app/models/');
define('BASE', dirname($_SERVER['PHP_SELF']));


//CHAMANDO A PASTA SYSTEM, CONTROLADOR E O MODELO
require_once('system/system.php');
require_once('system/model.php');
require_once('system/controller.php');
//require_once('system/conector.php');
//date_default_timezone_set('America/Recife');

//FUNÇÃO QUE CARREGA AUTOMATICAMENTE OS ARQUIVOS DA PASTA models e Helpers
//var $file PEDE O NOME DO ARQUIVO 
 function __autoload( $file ){
     
        if ( file_exists(MODELS . $file . '.php') )
            require_once( MODELS . $file . '.php' );
        
        else if ( file_exists(HELPERS . $file . '.php') )
           require_once( HELPERS . $file . '.php' );
            
        else
            
            die("Model ou Helper não encontrado.");
    }

    

   
    $start = new System;
    $start->run();
    $start->setTimezone('America/Recife');
   

?>

por favor me ajudem,, se for algum bug do 00webhost ou alguma restrição.. ajudem faloww

Link to post
Share on other sites

2 answers to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148854
    • Total Posts
      644872
×
×
  • Create New...