Ir para conteúdo

POWERED BY:

Arquivado

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

Ps1c0tIcO

sistema de login PDO

Recommended Posts

Estou começando a aprender php e to fazendo um sistema com login mas não estou conseguindo logar, está retornando para a mensagem “Usuário ou senha inválidos”, já tentei tirar criptografia, olhei o usuário e senha no banco de dados e eles estão corretos mas fica do mesmo jeito, já faz uns dias que estou parado ai, pesquisei em vários lugares e até agora não consegui chegar em nenhuma solução, não da nenhum erro, só não valida o usuário e senha :/ alguém ai pode me ajudar?

 

 

Login.class.php

<?php

	class Login extends DB{
	
	private $tabela = 'usuarios';
	private $prefix = 'teste_';
	private $cookie = true;
	public $erro = '';
	
	private function crip($senha){
		return sha1($senha);
	}
	
	private function validar($usuario,$senha){
		$senha = $this->crip($senha);
		
		try{
		$validar = self::getConn()->prepare('SELECT `id` FROM `'.$this->tabela.'` WHERE `email`=? AND `senha`=? LIMIT 1');
		$validar->execute(array($usuario,$senha));
		
		return ($validar->rowCount() == 1) ? true : false;
		
		
	}catch(PDOExeption $e){
		$this->erro = 'Sistema indisponível';
		logErros($e);
		return false;
	}
}
function logar($usuario,$senha,$lembrar=false){
	if($this->validar($usuario,$senha)){
		if(!isset($_SESSION)){
		session_start();
		}
		
		$_SESSION[$this->prefix.'usuario'] = $usuario;
		$_SESSION[$this->prefix.'logado'] = true;
		
		if($this->cookie){
			$valor = join('#',array($usuario,$_SERVER['REMOTE_ADDR'],$_SERVER['HTTP_USER_AGENT']));
			$valor = sha1($valor);
			setcookie($this->prefix.'token',$valor,0,'/');
		}
		
		if($lembrar){
			$this->lembrardados($usuario,$senha);
		}
		return true;
	}else{
		$this->erro = 'Usuário ou senha inválidos';
		return false;
	}
}

function logado($cookie=true)
	{
	if(!isset($_SESSION)){
	session_start();
	}

	if(!isset($_SESSION[$this->prefix.'logado']) AND !$_SESSION[$this->prefix.'logado'] = false){
		if($cookie){
			return $this->dadosLembrados();
		}else{
			$this->erro = 'Você não está logado';
			return false;
		}
	}
	if($this->cookie){
		if(!isset($_COOKIE[$thjis->prefix.'token'])){
			$this->erro = 'Você não está logado';
			return false;
		}else{
			$valor = join('#',array($_SESSION[$this->prefix.'usuario'],$_SERVER['REMOTE_ADDR'],$_SERVER['HTTP_USER_AGENT']));
			$valor = sha1($valor);
			if($_COOKIE[$this->prefix.'token'] !== $valor){
				$this->erro = 'Você não está logado';
				return false;
			}
		}
	}
	return true;
}

function sair($cookie=true){
	if(!$_SESSION){
		session_start();
	}
	unset($_SESSION[$this->prefix.'usuario']);
	$_SESSION[$this->prefix.'logado'] = false;
	
	if($this->cookie AND isset($_COOKIE[$this->prefix.'token'])){
		setcookie($this->prefix.'token',false,(time()-3600),'/');
		unset($_COOKIE[$this->prefix.'token']);
	}
	
	if($cookie){
		$this->limparLembrados();
	}
	
	return !$this->logado(false);
}

private function limparLembrados(){
	if(isset($_COOKIE[$this->prefix.'login_user'])){
		setcookie($this->prefix.'login_user',false,(time()-3600),'/');
		unset($_COOKIE[$this->prefix.'login_user']);
	}
	
	if(isset($_COOKIE[$this->prefix.'login_pass'])){
		setcookie($this->prefix.'login_pass',false,(time()-3600),'/');
		unset($_COOKIE[$this->prefix.'login_pass']);
	}
}

private function dadosLembrados(){
	if(isset($_COOKIE[$this->prefix.'login_user']) AND isset($_COOKIE[$this->prefix.'login_pass'])){
		$usuario = base64_decode(substr($_COOKIE[$this->prefix.'login_user'],1));
		$senha = base64_decode(substr($_COOKIE[$this->prefix.'login_pass'],1));
		
		return $this->logar($usuario,$senha,true);
	}
	return false;
}

private function lembrarDados($usuario,$senha){
	$tempo = strtotime('+7 day',time());
	$usuario = rand(1,9).base64_encode($usuario);
	$senha = rand(1,9).base64_encode($senha);
	
	setcookie($this->prefix.'login_user',$usuario,$tempo,'/');
	setcookie($this->prefix.'login_pass',$senha,$tempo,'/');
}
	}
?>

 

 

 

login.php

 

<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>Teste.com - Login</title>
</head>
<body>        

<div id"login">

<?php

	if(isset($_POST['logar'])){
		if($objLogin->logar($_POST['email'],$_POST['senha'],$_POST['lembrar'])){
			header('Location: ./');
		}else{
			echo $objLogin->erro;
		}
	}
?>


	<form name="login" enctype="multipart/form-data" action="" method="post">
    	<input type="text" name="email" />
        <input type="password" name"senha" />
        <input type="checkbox" name="lembrar" />
        <input type="submit" name="logar" value="logar" />
    </form>
</body>
</html>

 

 

Index.php
<?php 
	  include('classes/DB.class.php');
	  include('classes/Login.class.php');
	  
	  $objLogin = new Login;
	  
	  if(!$objLogin->logado()){
		  include('login.php');
		  exit();
	  }
	  
	  if(true==$_GET['sair']){
	  	$objLogin->sair();
		header('Location ./');		
	  }
?>
<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width; initial-scale=1.0" />
<title>Teste.com - Index</title>
</head>
<body>        

Logado: <a href="?sair=true">sair</a>

</body>
</html>

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro.

 

se seu objetivo foi orientar objeto recomendo voltar para o estudo bem rápido.

 

segunda coisa

 

da um print no objeto

$validar

 

e ve o que ele retorna

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, ainda estou aprendendo orientação a objeto na faculdade mas la só to estudando java, myhsql e html, ainda não estudei php to aprendendo de curioso mesmo kk.

 

eu mandei imprimir o $validar e não retornou nada. Mandei imprimir o usuário e senha tbm e só imprimiu o usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então o sistema esta "correto", já que não tem senha o usuário não é válido mesmo.

 

da uma olhada como vc chama seus objetos.

 

primeira coisa é seu objeto logar não pode extender uma conexão.
ele usa uma conexão mas eles não tem nada em comum

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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