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 ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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