Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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

Acho que o problema e em MD5. Você tem skype ? Ou algum meio de comunicação ?

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

Tentei fazer dos dois métodos que você falou.

O primeiro esta dando este erro:

http://prntscr.com/jth3aw

 

E o segundo da que login ou senha não confere...

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






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

×