Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com hospedador.


Rodrigo Mafra

Pergunta

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 para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...