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

Function sem erros, mas na executa a função.


JaguA

Pergunta

Bom dia, Boa tarde...

O caso é bem simples, é um função para autenticar um Login e Senha.

ele funciona uma parte outra não....

dentro da função existe o comando os pesquisa o usuario onde o Login = login e senha = senha. beleza

então tem a condição

se mostrar menos que 1 registro deve dar um erro e retorna a pagina de login. Porém isso não acontece.. e ele pula para a condição de negação que é buscar as informações dentro do Banco e da tabela e gravar na Session..

ele faz tudo isso menos a condição de quando tem algo errado.

a condição é essa e os arquivos segue ai em baixo.

// se não encontrar nenhum registro vai dar o error

     if($this->qregistro < 1){ 
       echo ' 
&lt;script type="text/javascript">
    alert("Acesso Negado / Usuario ou Senha Incorreto");
    history.back(-1);
</script>    
';
 }
Aquivos. class.conexao.php
<?php
########################################################
######Configuração para conectar ao Banco de Dados.#####
########################################################

class conexao{
    private $host = 'localhost';  // Host ( p/ Local "127.0.0.1" )
    private $user = 'root';  // Usuario do Banco de Dados
    private $pass = '123456';  // Senha do Banco de Dados
    private $banco = 'tcc'; // Nome do banco que sera utilizado
    public $conecta_bd;
    public $select_bd;
    private $data;
    private $novadata;
    private $hora;
    private $novahora;
    
    public function conectarBanco() {   
        $this->conecta_bd = mysql_connect($this->host, $this->user, $this->pass) or die ('Erro ao Conectar com o Banco de Dados.'); 
        $this->select_bd = mysql_select_db($this->banco, $this->conecta_bd) or die ('Erro ao Selecionar Banco de Dados.');
        
        @$this->data  = date("y/m/d");
        @$this->novadata = substr($data,6,2).substr($data,2,3)."/".substr($data,0,2);

        @$this->hora = date("H:i:s",mktime(date("H") - 1, date("i"), date("s")));
        @$this->novahora = substr($hora,0,2)."hs".substr($hora,3,2)."min";
    }
    
    public function fecharBanco() {
        mysql_close($this->conecta_bd);        
    }
}
?>
autentica.class.php
<?php

class autentica{
    
    public $login;
    public $senha;
    private $sql;
    private $qregistro;
    private $resp;
    private $registro;
    public $codigo;
    public $acesso;
    private $sql_update;
    private $exeUpdate;
    public $nome; //variavel que muda se é login ou cnpj.
    public $tabela;
        
public function autenticar() {
    
    
$this->sql = mysql_query("select * from" .$this->tabela. "where" .$this->nome."=".$this->login. "and senha = ".$this->senha);
//vai contar a quantidade de linhas que ele retorna a quantidade de pessoas cadastradas.
$this->qregistro = mysql_num_rows($this->sql); 

// se não encontrar nenhum registro vai dar o error

     if($this->qregistro < 1){ 
       echo ' 
&lt;script type="text/javascript">
    alert("Acesso Negado / Usuario ou Senha Incorreto");
    history.back(-1);
</script>    
';
 }else{
    
    $this->resp = mysql_query("select * from" .$this->tabela. "where" .$this->nome."=".$this->login. "and senha = ".$this->senha);
    //
    $this->registro = mysql_fetch_array($this->resp);
    $this->$codigo = $registro['id'];
    $this->$login = $registro['cnpj'];
    $this->$acesso = $registro['ultimoacesso'];

   
     //vai atualizar a ultima hora que o usuario logou
    $this->sql_update = "UPDATE" .$this->tabela. "SET acesso = now() where id =" .$this->codigo;
    $this->exeUpdate = mysql_query($this->sql_update);
        }
    }
}

?>
autenticar.php
<?php session_start();


//chamar o banco
if(!empty($_POST)and(empty($_POST['edtLogin'])or empty($_POST['edtSenha']))){
?>

&lt;script type="text/javascript">
    alert("Voce deve informar USUARIO e SENHA");
    //History back -1 retornar uma pagina
    history.back(-1)
</script>

<?php
    exit();

    }
    
include_once "_config/class.conexao.php"; // Buscando arquivo de configuração com o banco de dados.
include_once "_class/autentica.class.php";
$banco = new conexao;
$banco->conectarBanco();
$autenticacao = new autentica;
$autenticacao->autenticar;
    
    //addslashes impede comandos sqls para tentar bular o login , ele impede comandos de programação
$autenticacao->login = addslashes($_POST['edtLogin']);
$autenticacao->senha = addslashes($_POST['edtSenha']);

//variavel que informa a tabela a selecionar
$autenticacao->nome = "cnpj";
$autenticacao->tabela = "usuarios";
   
    
    //vou utilizar as sessoes agora a sessao codigo vai armazenar codigo e assim por diante
    $_SESSION['codigo'] = $autenticacao->codigo;
    $_SESSION['login']  = $autenticacao->login;
    $_SESSION['senha']  = $autenticacao->senha;
    $_SESSION['acesso'] = $autenticacao->acesso; 
    ?>
    &lt;script type="text/javascript">
    window.location='sistema/';
</script>


<?php 
$banco->fecharBanco();
?>

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

http://php.net/manual/pt_BR/function.mysql-num-rows.php

Valor Retornado:

O numero de linhas em um conjunto de resultados em caso de sucesso, ou FALSE em caso de falha.

// alterado para ! ao invez de < 1
 if(!$this->qregistro){ 
       echo ' 
&lt;script type="text/javascript">
    alert("Acesso Negado / Usuario ou Senha Incorreto");
    history.back(-1);
</script>    
';
 }

Editado por Kim Pastro
Link para o comentário
Compartilhar em outros sites

  • 0

Por que, isso muda quando é o Operador CPF ou Empresa CNPJ ... então eu mantenho a variável sendo assim quando vocês escolhe CNPJ ele joga pra ela para verificar o campo CNPJ e assim para o CPF, por que na verdade é 2 banco de dados que são utilizado quanto a isso ta tudo certo é os a questão da consulta da Query mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0

Testando e retestando eu cheguei a conclusão, que a function não está realizando nenhuma pesquisa no banco de dados, não executa nenhuma query...

eu alterei um poco o código tirei algumas declarações de variáveis da classe, no qual na verdade não tinha necessidade.

Ficando assim.

<?php
class autentica{
    
    public $login;
    public $senha;
    public $codigo;
    public $acesso;
    public $nome; //variavel que muda se é login ou cnpj.
    public $tabela;
        
public function autenticar() {
    
    
$sql = mysql_query("select * from" .$this->tabela. "where" .$this->nome."=".$this->login. "and senha = ".$this->senha);
//vai contar a quantidade de linhas que ele retorna a quantidade de pessoas cadastradas.
$qregistro = mysql_num_rows($sql); 

// se não encontrar nenhum registro vai dar o error

     if($qregistro < 1){ 
       echo ' 
<script type="text/javascript">
    alert("Acesso Negado / Usuario ou Senha Incorreto");
    history.back(-1);
</script>    
';
 }else{
    
    $resp = mysql_query("select * from" .$this->tabela. "where" .$this->nome."=".$this->login. "and senha = ".$this->senha);
    //
    $registro = mysql_fetch_array($resp);
    $this->$codigo = $registro['id'];
    $this->$login = $registro['razao'];
    $this->$acesso = $registro['acesso'];

   
     //vai atualizar a ultima hora que o usuario logou
    $sql_update = "UPDATE" .$this->tabela. "SET acesso = now() where id =" .$this->codigo."";
    $exeUpdate = mysql_query($sql_update);
        }
    }
}

?>

explicando um pouco por que eu tenho Variaveis Nome e Tabela.

Meu sistema consiste em uma tela Inicial de login -> CNPJ / Senha

Apos esse Login ele cai em outra Pagina onde verifica se esse login foi efetuado se sim mostra a pagina e seleciona outro banco de dados que é da empresa logada.

ao mostra a pagina ele vai verificar se existe algum Operador Logado.

então por isso tem declaração

$nome e $tabela

$nome recebe se é cnpj ou user

$tabela recebe empresa ou operador

Link para o comentário
Compartilhar em outros sites

  • 0

consegui arrumar...

coisa besta sabe ashusahuhasu

primeiro

no autenticar.php na declaração autenticacao = new; / autenticacao->autenticar eu esqueci de por ();

dps na classe mesmo dentro da function eu estava puxando valores errados.

$registro = mysql_fetch_array($resp);
    $this->$codigo = $registro['id'];
    $this->$login = $registro['razao'];
    $this->$acesso = $registro['acesso'];

tem $ na frente das variavel sendo que não é necessario.

bem obrigado Kim por ter tentando ajudar.

Editado por JaguA
Link para o comentário
Compartilhar em outros sites

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...