Ir ao conteúdo
  • Cadastre-se
Stifler874

PHP Erro Login em Website

Recommended Posts

O erro quando eu tento fazer login no meu site e o seguinte: http://prntscr.com/jt567s

 

Codigo:

login.php

<?php
    session_start();
    require('class/Config.inc.php');
    $login = new login;
    
    if(isset($_POST['submit'])){
        if($login->logar($_POST['username'], @$_POST['password'])){
            $_SESSION['username'] = $_POST['username'];
            echo "<script type='text/javascript'>window.alert('Logado com Sucesso.');</script><script>window.location.href= 'index.php';</script>";
            
        }else{
            echo '<script type="text/javascript">window.alert("Login ou senha incorretos");</script>';
        }
    }
    
?>
    <body>
        <div class="wrap">
            <div id="content">
                <p><img src="img/logo-cpb.png" width="400" height="200" /></p>    
                <div id="main">
                    <div class="full_w">
                        <form action="<?php $PHP_SELF; ?>" method="POST">
                            <label for="login">username:</label>
                            <input id="login" name="username" class="text" />
                            <label for="pass">password:</label>
                            <input id="pass" name="password" type="password" class="text" />
                            <div class="sep"></div>
                            <button type="submit" name="submit" class="ok">Login</button> 
                            <button type="button" class="reg" onclick="window.location.href='register.php'">Register</button>
                        </form>
                    </div>
                    
                   
                </div>
            </div>
        </div>
    </body>


 

Login.class.php

<?php
class Login {
    private function encriptar($senha){
        $salt = '/x!a@r-$r%an¨.&e&+f*f(f(a)';
        $output = hash_hmac('md5', $senha, $salt);
        return $output;
    }
    public function logar($login, $senha){
        $conexao = new Config;
        $pass = self::encriptar($senha);
        try{
            $conect = $conexao->getConn();
            $prepare = $conect->prepare("SELECT * FROM accounts WHERE login = ? AND password = ?");
            $prepare->bindvalue(1, $login);
            $prepare->bindvalue(2, $pass);
            $prepare->execute();
            $ranking = $prepare->rowCount();
            if ($ranking >= 1){
                return true;
            }else{
                return false;
            }
        }catch(PDOException $e){
            echo "Erro: ".$e->getMessage();
        }
    }
}

Config.class.php

<?php
Class Config{
    private static $Host = HOST;
    private static $User = USER;
    private static $Pass = PASS;
    private static $Dbsa = DBSA;
    private static $Connect = null;
    
    private static function Conectar(){
        try {
            if(self::$Connect == null):
                $dsn = 'pgsql:host=' . self::$Host . ';dbname=' . self::$Dbsa;
                $options = [ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8' ];
                self::$Connect = new PDO($dsn, self::$User, self::$Pass, $options);
            endif;
        } catch (PDOException $e) {
            PHPErro($e->getCode(), $e->getMessage(), $e->getFile(), $e->getFile());
        }
        
        self::$Connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return self::$Connect;
    }
    
    public static function getConn(){
        return self::Conectar();
    }
    
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DarkPirok Boa noite,

 

Pela imagem,  o erro indica que não foi possível encontrar o driver do pdo no seu vertrigoserv.

Procure no php.ini que fica na pasta do php e veja se a extensão está ativada.

 

extension=php_pdo_pgsql.so

ou

extension=php_pdo_pgsql.dll

 

Como eu uso o EasyPHP DEV-server 17, o meu é  extension=php_pdo_pgsql.dll  

Basta descomentar a linha retirando o  " ; " da frente.

 

No mais, recomendo você trocar o vertrigoserv pelo easyPHP.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://prntscr.com/jtclr3

Eu ja habilitei essa extesion e também instalei o EasyPHP, porém continua dando o erro.

adicionado 11 minutos depois

Eu consegui aqui usando o wamp. porém quando vou logar fala que o usuário ou senha esta errado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DarkPirok Bem, eu uso o EasyPHP e jamais deu erro de "driver".

 

Estou levando a crer que pode ser problemas no seu código. É necessário fazer em OO?

Ali no código você compra com a session. 

 

Você pode usar a extensão mysqli  que também pode ser escrita com OO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DarkPirok

37 minutos atrás, DarkPirok disse:

Você tem skype ? Ou algum meio de comunicação ?

Não, o único meio de comunicação é por aqui no fórum!

 

37 minutos atrás, DarkPirok disse:

Acho que o problema e em MD5

Não acho que possa ser problema dele. Porque na sua imagem inicial apontava que não encontrava o driver. 

Experimente fazer a conexão e a consulta ao BD de forma mais simples. E veja se funciona. Se funcionar, aí dá para pensar que o erro pode estar na função conectar() ou logar()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já consegui resolver este erro no começo do tópico. Pode da resolvido. Agora estou com outro erro, e vou abrir outro tópico para não virar bagunça.

 

Estou tentando entrar no meu site e esta apresentando esse erro: http://prntscr.com/jtf5xe

porém o login e a senha estão corretos. Dai eu tiro o MD5 e tento conectar vai tranquilo...

Código com erro:

<?php
class Login {
    private function encriptar($senha){
        $salt = '/x!a@r-$r%an¨.&e&+f*f(f(a)';
        $output = hash_hmac('md5', $senha, $salt);
        return $output;
    }
    public function logar($login, $senha){
        $conexao = new Config;
        $pass = self::encriptar($senha);
        try{
            $conect = $conexao->getConn();
            $prepare = $conect->prepare("SELECT * FROM accounts WHERE login = ? AND password = ?");
            $prepare->bindvalue(1, $login);
            $prepare->bindvalue(2, $pass);
            $prepare->execute();
            $ranking = $prepare->rowCount();
            if ($ranking >= 1){
                return true;
            }else{
                return false;
            }
        }catch(PDOException $e){
            echo "Erro: ".$e->getMessage();
        }
    }
}

 

Código que entra normalmente:

<?php
class Login {
    public function logar($login, $senha){
        $conexao = new Config;
        $pass = ($senha);
        try{
            $conect = $conexao->getConn();
            $prepare = $conect->prepare("SELECT * FROM accounts WHERE login = ? AND password = ?");
            $prepare->bindvalue(1, $login);
            $prepare->bindvalue(2, $pass);
            $prepare->execute();
            $ranking = $prepare->rowCount();
            if ($ranking >= 1){
                return true;
            }else{
                return false;
            }
        }catch(PDOException $e){
            echo "Erro: ".$e->getMessage();
        }
    }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DarkPirok Experimente trocar a linha do $salt que gera uma key:

 

private function encriptar($senha){
        $secret_key = bin2hex(random_bytes(32));
        $output = hash_hmac('md5', $senha, $secret_key);
        return $output;
    }

OU melhor, creio que você poderia até nem usar essa função e colocar direto na função logar() o uso do md5() nesta linha:

$pass = self::encriptar($senha);

Desta forma:

$pass = md5($senha);

Lembrando que, para dar correto, a senha no banco de dados precisa ser a mesma hash para ser comparada. Já que o MD5 é uma criptografia de uma via apenas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho este codigo aqui:
 

<?php
error_reporting(0);
session_start();
function encripitar($senha){
    $salt = '/x!a@r-$r%an¨.&e&+f*f(f(a)';
    $output = hash_hmac('md5', $senha, $salt);
    return $output;
}
$form = $_POST['submit'];
$username = $_POST['username'];
$passwordori = $_POST['password'];
$id = $_POST['id'];
$encript = encripitar($passwordori);
if(isset($form)){
    if($username !== '' && $passwordori !== ''){
        $host        = "host=localhost";
        $port        = "port=5432";
        $dbname      = "dbname=pb";
        $credentials = "user=postgres password=dea66";
        $conn = pg_connect( "$host $port $dbname $credentials" );
        $query = "SELECT * FROM accounts WHERE login = '$username' AND password = '$encript';";
        $result = pg_query($conn, $query);
        $resultado = pg_num_rows($result);
        if(pg_num_rows($result) != 1){
            echo "<script>alert('Usuario ou senha esta incorreta');</script><script>window.history.back()</script>";
        }else{
            $_SESSION['username'] = $_POST['username'];
            echo "<script>window.history.back()</script>";
        }
    }else{
        echo "<script>alert('Usuario ou senha esta incorreta.');</script><script>window.history.back()</script>"; 
    }
} 
?>

E por ele  consigo fazer o login normalmente...

Poderia me ajudar a fazer esse código funcional virar o que não esta funcionando ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×