Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>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.
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
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