Jump to content
Fórum Script Brasil
  • 0

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


JaguA

Question

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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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>    
';
 }

Edited by Kim Pastro
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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.

Edited by JaguA
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...