Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pellegrini2106

Problema com hierarquia de pastas no MVC

Recommended Posts

Olá galera do php tenho um probleminha estou desenvolvendo um sistema de login  no padrão MVC , mas só que o Conteúdo responsável por logar some da pagina. Lembrando que uso a classe usuário para fazer um crud também.:thumbsup:

Modelo:
<?php

class Usuario {

    private $id_usuario;
    private $nome;
    private $email;
    private $perfil;
    private $usuario;
    private $senha;

    public function getId_usuario() {
        return $this->id_usuario;
    }

    public function getNome() {
        return $this->nome;
    }

    public function getEmail() {
        return $this->email;
    }

    public function getPerfil() {
        return $this->perfil;
    }

    public function getUsuario() {
        return $this->usuario;
    }

    public function getSenha() {
        return $this->senha;
    }

    public function setId_usuario($id_usuario) {
        $this->id_usuario = $id_usuario;
    }

    public function setNome($nome) {
        $this->nome = $nome;
    }

    public function setEmail($email) {
        $this->email = $email;
    }

    public function setPerfil($perfil) {
        $this->perfil = $perfil;
    }

    public function setUsuario($usuario) {
        $this->usuario = $usuario;
    }

    public function setSenha($senha) {
        $this->senha = $senha;
    }
}

DaoUsuario:

class DaoUsuario {
  
   function __construct() {

        try {
            $this->cnx = new PDO('mysql:host=localhost;port=3306;dbname=usuarios', 'root', '');
        } catch (PDOException $ex) {
            echo '<div class="alert-danger">' . $ex->getMessage() . '</div>';
        }
     
    }
   public function logarUsuario(Usuario $Usuario) {

        $array = array();
        
        $sql = "SELECT * FROM tbusuario WHERE usuario ='{$Usuario->getUsuario()}' AND senha ='{$Usuario->getSenha()}' LIMIT 1";
        $campo = $this->cnx->prepare($sql);
        $campo->bindValue(1, $Usuario->getUsuario(), PDO::PARAM_STR);
        $campo->bindValue(2, $Usuario->getSenha(), PDO::PARAM_STR);
        $campo->execute();
          while ($row = $campo->fetch(PDO::FETCH_ASSOC)) {
            $array[$row['id_usuario']]['id_usuario'] = $row['id_usuario'];
            $array[$row['id_usuario']]['nome'] = $row['nome'];
            $array[$row['id_usuario']]['email'] = $row['email'];
            $array[$row['id_usuario']]['perfil'] = $row['perfil'];
            $array[$row['id_usuario']]['usuario'] = $row['usuario'];
            $array[$row['id_usuario']]['senha'] = $row['senha'];
        }
        return $array;
    }
}

Controle:

require_once '../modelo/Usuario.php';
require_once '../Dao/DaoUsuario.php';

class controleUsuario{
  
  public function ctlLogarUsuario() {

        $Usuario = new Usuario();
        $daoUsuario = new DaoUsuario();

        if (isset($_POST["btnEntrar"])) {
            if (empty($_POST["txtusuario"]) || (empty($_POST["txtsenha"]))) {
                echo '<div class="alert-danger"> Por Favor Preencha o Campo em Branco!!!!!!</div>';
            } else {
                $Usuario->setUsuario($_POST["txtusuario"]);
                $Usuario->setSenha($_POST["txtsenha"]);
                return $daoUsuario->logarUsuario($Usuario);
            }
        }
    }
}

Index.php
  <!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Principal:</title>
    </head>
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <link rel="stylesheet" type="text/css" href="css/alerta.css">
    <link rel="stylesheet" type="text/css" href="css/bootstrap.css">
    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
    <script language="javascript" type="text/javascript" src="js/JQuery.mim.js"></script>
    <script language="javascript" type="text/javascript" src="js/fechar.js"></script>
    <script language="javascript" type="text/javascript" src="js/bootstrap.js"></script>
    <body>
        <div class="topo">

        </div>
        <div class="cabecalho">
            <form method="post" class="letras alinhaLogin">
                <table width="688" border="0">
                    <tr>
                        <td width="58" align="center" valign="middle">Usuário:</td>
                        <td width="144" align="center" valign="middle"><input name="txtusuario" type="text" size="40" placeholder="Digite Usuário:" class="form-control"></td>
                        <td width="46" align="center" valign="middle">Senha:</td>
                        <td width="144" align="center" valign="middle"><input name="txtsenha" type="text" size="10"  placeholder="Digite Senha:" class="form-control"></td>
                        <td width="94" align="center" valign="middle"><input name="btnEntrar" type="submit" class="btn btn-info" value="Entrar:"> </td>
                    </tr>
                </table>
            </form>
        </div>
        <div id="m">
            <?php
            require_once "../controle/controleUsuario.php";
            $lg = new controleUsuario();
            $lg->ctlLogarUsuario();
            ?>
        </div>
    </body>
</html>


  

 

forum logar sistema.docx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Some como?

 

Habilite os erros do PHP ou insira no inicio do script o code abaixo.

 

ini_set('display_errors', true);
error_reporting(E_ALL);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já Ativei o display erros do php, mas agora da esta mensagem pra min. O que pode ter acontecido ?

 

Aviso: require_once (../ controle / controleusuario.php): não foi possível abrir o stream: Nenhum arquivo ou diretório no C: \ wamp \ www \ Login_DAO \ index.php na linha 17.

Erro fatal: require_once (): Falha na abertura requerida '../controle/controleusuario.php' (include_path = '.; C: \ php \ pear') em C: \ wamp \ www \ Login_DAO \ index.php on line 17

Compartilhar este post


Link para o post
Compartilhar em outros sites

Suas classes não estão sendo encontradas, use caminhos absolutos.

 

Ou melhor

 

Use o composer para carregar suas classes automaticamente ou autoloader

 

Com estes requires você terá problemas eternos.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já descobri qual foi o  erro e que tenho uma hierarquia de pastas e um arquivo index.php que está fora das pastas  só que não consigo acessar nada da pasta controle através do require_once porque o index esta fora da pasta, mas se eu crio a pasta e coloco o index dentro eu consigo mas quando chamo o wampserver ele tem q acessar a pasta primeiro e não e isso que eu quero.Como faço para acessar a pasta do Controle sendo q o index.php está fora? veja a figura abaixo ela explica tudo.hierarquia_pastas.thumb.png.83c9db0992c3e74c72782969563ad1a5.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o index está rodando na raiz e as pastas estão abaixo da raiz.

Você não precisa dos ../

Joga direto o nome da pasta dos controles... Ex:

controle/controledousuario.php

 

De qlq forma segue a dica do Willians que é sucesso.

 

Funciona como 'Magic'

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, gabrieldarezzo disse:

Se o index está rodando na raiz e as pastas estão abaixo da raiz.

Você não precisa dos ../

Joga direto o nome da pasta dos controles... Ex:

controle/controledousuario.php

 

De qlq forma segue a dica do Willians que é sucesso.

 

Funciona como 'Magic'

Ja tentei Gabriel mas não funciona

 

1 minuto atrás, gabrieldarezzo disse:

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dependendo o sistema é case-sensitive.

 

Oq pode atrapalhar.

 

Em outras palavras. 

 

ISSO !== isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

E as dicas que dei é complexa!? Problema do Pelegrine é antigo, as dicas que damos a ele, não aplica quase nada. :tounge_wink:

Então vá pelo mais fácil, defina uma constante e coloque no arquivo raiz de sua configuração.


"config.php"

 

define('ROOT', __DIR__);

quando efetuar os includes, add  a constante antes do caminho.

 

require_once ROOT ."/controle/controleUsuario.php";

 

Caso precise retornar um diretorio no root, use dirname()

 

define('ROOT', dirname(__DIR__));

echo ROOT; //print no path para ir ajustando rrsrs

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  Ola amigos do php!!!!

Tenho uma hierarquia de pastas e um arquivo index.php que está na Raiz, mas só que não consigo acessar nada da pasta controle através do require_once porque o index esta na Raiz, mas se eu crio a pasta e coloco o index dentro eu consigo mas quando chamo o wampserver ele tem q acessar a pasta primeiro e não e isso que eu quero.Como faço para acessar a pasta do Controle sendo q o index.php está fora? veja a figura abaixo ela explica tudo.

hierarquia_pastas.thumb.png.83c9db0992c3e74c72782969563ad1a5.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pellegrini2106, a não ser que tenha alguma particularidade que você não citou, me parece muito simples a sua questão:

 

É só mudar require_once '../controle/controleUsuario.php';
para 
require_once 'controle/controleUsuario.php';

Quando você usa .. (dois pontos) você esta voltando um diretório, por isso que o seu index.php só funciona dentro da pasta controle :)

Por segurança, recomendo usar:

require_once __DIR__ .  '/controle/controleUsuario.php';

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
41 minutos atrás, Pellegrini2106 disse:

E João Batista tenho te confessar q não sou muito fã de Framework!!!

 

Isso é irrelevante, @Pellegrini2106. As PSR são padrões definidos pela comunidade; apenas siga-as, independentemente de gostar ou não de framework

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Pellegrini2106 disse:

Não funcionou EdCesar!!!  E João Batista tenho te confessar q não sou muito fã de Framework!!!

 

Pellegrini2106 sua questão é simples, pare e analise:
.. (dois pontos) volta um diretório!
Quando você der o require_once __DIR__ . '/controle/controleUsuario.php' o arquivo controleUsuario estará no mesmo nível de index.php, sendo assim o que acontecera com os requires que estão em controleUsuario ?

você terá que fazer a mesma coisa, mudar:

require_once '../modelo/Usuario.php';
require_once '../Dao/DaoUsuario.php';

 

para 

require_once 'modelo/Usuario.php';
require_once 'Dao/DaoUsuario.php';

E se ainda assim der algum erro, você precisa verificar o arquivo que esta dando erro e corrigir o require_once

Cara, isso é um inferno! Perca duas horinhas e estude namespaces e autoloading! E seja feliz!!!! Hahahaha

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 horas atrás, EdCesar disse:

 

Pellegrini2106 sua questão é simples, pare e analise:
.. (dois pontos) volta um diretório!
Quando você der o require_once __DIR__ . '/controle/controleUsuario.php' o arquivo controleUsuario estará no mesmo nível de index.php, sendo assim o que acontecera com os requires que estão em controleUsuario ?

você terá que fazer a mesma coisa, mudar:

require_once '../modelo/Usuario.php';
require_once '../Dao/DaoUsuario.php';

 

para 

require_once 'modelo/Usuario.php';
require_once 'Dao/DaoUsuario.php';

E se ainda assim der algum erro, você precisa verificar o arquivo que esta dando erro e corrigir o require_once

Cara, isso é um inferno! Perca duas horinhas e estude namespaces e autoloading! E seja feliz!!!! Hahahaha

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.