Problems optimizing login system with autoload

0

I did an optimization on the login system and as I had problems with directory I decided to search the web and found a legal resource of PHP that is autoload . I did the whole implementation according to the examples I got but I'm having problems.

Here's how my code is:

It starts with index.php , which is at the root of the project.

index.php

<?php
 // Adicionando o arquivo de autoload, que faz o carregamento dos diretórios de forma dinâmica.
 require_once( "autoload.php" );

 // Verificando se existe a sessão.
 session_start(); 

 // A sessão ainda não existe. Primeiro acesso do usuário.
 if ( !isset( $_SESSION[ 'logado' ] ) ) {
 header( 'location:login.php' );
 }

 // A sessão do usuário já existe. Vericando se ainda está logado.
 elseif ( $_SESSION[ 'logado' ] == false)  { 
 header( 'location:login.php' );
 } 

 // Usuário já conectado. Envia direto para a página inicial.
 else {
 header( 'location:inicio.php' );
 }
?>

The first task of PHP is to add autoload.php , which is also at the root of the project. Follow it below:

autoload.php

<?php

 // Função que carrega as classes da pasta "database".
 function carregar_classes_database( $class ) {

    if ( file_exists( "database/" . strtolower( $class ) . ".class.php" ) ) {
        require_once( "database/" . strtolower( $class ) . ".class.php" );
    }
 }

 spl_autoload_register( "carregar_classes_database" );

 $obj1 = new Database();

 // Função que carrega as classes da pasta "entity".
 function carregar_classes_usuario( $class ) {
    if ( file_exists( "entity/usuario/" . strtolower( $class ) . ".class.php" ) ) {
        require_once( "entity/usuario/" . strtolower( $class ) . ".class.php" );
    }
 }

 spl_autoload_register( "carregar_classes_usuario" );

 $obj2 = new Usuario();

?>

I already put a echo within if of file_exists just to ensure that the file is really valid and is.

My directory structure is in the following format:

Asmysessiondoesnotexistonfirstaccesstothesite,I'mforwardedtologin.Atthispointautoload.phphasalreadybeenadded.

Igetontheloginscreen,whereIhavetheuserinputandtheinputpasswordandalsothesubmitbutton.>

Theactionofformcallsaloginvalidationfunction,whichIcalledvalidarLogin.php

validateLogin.php

<?php//Adicionandorecursos.COMENTADOPARAUTILIZAROAUTOLOADEEVITARINCLUIROSARQUIVOS"NA MÃO".
  //require_once( "database/database.class.php" );
  //require_once( "entity/usuario/usuario.class.php" );
​
  session_start(); 
  $database = new Database();
  $database->connect();

  // Conexão bem sucedida.
  if ( $database->getConnected() ) {

    $user = new Usuario();
    $user->setUsuario( $_POST[ 'usuario' ] );
    $user->setSenha( $_POST[ 'senha' ] );

    // Validando se o usuário e a senha são válidos.
    if ( $user->exists( true, '' ) ) {

      $_SESSION[ 'erro' ]    = ''; 
      $_SESSION[ 'logado' ]  = true; 
      $_SESSION[ 'usuario' ] = $user->getUsuario(); 
      $_SESSION[ 'nome' ]    = $user->getNome() . ' ' . $user->getSobrenome(); 

      header('location:inicio.php');
    // Se o usuário for inválido volta para a tela de login.
    } else {

      $_SESSION[ 'erro' ]    = $user->getMSG_INVALID_USER(); 
      $_SESSION[ 'logado' ]  = false; 
      $_SESSION[ 'usuario' ] = ''; 
      $_SESSION[ 'nome' ]    = ''; 

      header('location:login.php');

    }

  } 

  // Ocorreu um erro na conexão. Volta para a página de login.
  else {

    $_SESSION[ 'erro' ]    = $database->getMsgError(); 
    $_SESSION[ 'logado' ]  = false; 
    $_SESSION[ 'usuario' ] = ''; 
    $_SESSION[ 'nome' ]    = ''; 
    header('location:login.php');

  }

 ?>

I've commented the require_once , because in my head, if I'm already using autoload , I do not need required_once anymore.

When I submit the login form and the above function is called I have an error in the line:

  $database = new Database();
  

Fatal error: Class 'Database' not found in /home/ubuntu/workspace/validatingLogin.php on line 10 Call Stack: 0.4673 238080 1. {main} () /home/ubuntu/workspace/validateLogin.php

Why am I having this error if my autoload has already started?

PHP should not know who the Database class is, since it is already in memory?

    
asked by anonymous 16.05.2017 / 04:25

0 answers