Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Urna Online


Anderson Ferreira

Pergunta

Oláa, boa tardee a todoos!

Estou fazendo um projetoo para meu curso de telemática, que seria uma 'Urna Online'...

O problema, que não vejo nada de errado no códigoo... E o problema é o seguinte:

Quando o eleitor digita corretamente o 'login' e 'senha', o código funciona perfeitamente, ou seja, redirecionando para outra página...

Quando o eleitor digita corretamente o 'login' e digita somente a 'senha' incorretamente, o código também funciona de forma correta, indicando que a senha está incorreta...

MÁS, quando o eleitor digita o 'login' de forma incorreta, era pra ele também imprimir uma mensagem de erro, indicando que o 'login' está incorreto... Só que ele não está imprimindoo nada :angry:

------------------------------------------------------------------------------

O site funciona da seguinte forma: o 'eleitor' entra na página inicial (index.html), e escolhe no menu a opção 'votação'... Depois, é redirecionado para a página 'login.html' onde é digitado o login e a senha... E depois é redirecionado para a página 'login.php', onde é feita toda a verificação, onde é indicado se o login e/ou senha está correto ou incorreto... Se tiver correto, ele redireciona para a página 'votacao.php', onde será confirmado todos os dados do eleitor (nome completo, titulo de eleitor, data de nascimento, etc)... E se tiver incorreto, era pra ele imprimir uma mensagem de erro na tela.

Em todas as páginas, está inserida uma 'include' (conexao.php), onde é conectado o banco de dados...

------------------------------------------------------------------------------

========

LOGIN.PHP

========

<?php include "../conexao.php"; ?>

<html>
    
    <head>
        <meta http-equiv="Content-Type" content="text/html" charset="utf-8" />  
        <title>Urna Online</title>
    </head>

    <body>
    
        <font face="Arial, Helvetica, sans-serif">
            
            <?php

                @session_start();
                
                    @$_SESSION["login"] = $_POST["val_login"] or die ("$erro3");
                    @$_SESSION["senha"] = $_POST["val_senha"] or die ("$erro3");

                #variaveis
                
                    $login = $_SESSION["login"];
                    $senha = $_SESSION["senha"];

                $conexao_tabela = ("SELECT * FROM eleitores WHERE login='$login'") or die ("$erro");
                $RS = mysql_query($conexao_tabela);

                while ($RF = mysql_fetch_array ($RS))
                     
                    {
                    
                        if ($RF["senha"] == $_SESSION["senha"])
                        
                            {
                            echo "<meta http-equiv='Refresh' content='0;URL=validacao.php>";
                            }
                            
                        else
                            {
                            echo "$erro3";
                            }
                    }

            ?>

        </font>
    
    </body>

</html>
======== CONEXAO.PHP ========
<font color="#ff0000" face="Arial, Helvetica, sans-serif" size="3">

    <?php

    
    #variaveis

        $nome_administrador  = "Anderson Ferreira / Rafael Pereira";
        $email_administrador = "urnaonline@yahoo.com.br";
        
        $servidor_bd = "localhost";
        $nome_bd     = "urna_online";
        $usuario_bd  = "root";
        $senha_bd    = "urna";
        
        $erro = "
                    <font color='#FF0000'>ERRO - 'Login' e/ou 'Senha' inválido(s)</font>
                    <br><br>
                    <a href='../'><font color='#FFFFFF'>VOLTAR</font></a>
                 ";
        
        $erro2 = "
                    <font color='#FF0000'>ERRO - Dados inválidos</font>
                    <br><br>
                    <a href='../'><font color='#FFFFFF'>VOLTAR</font></a>
                 ";

        $erro3  = "
                    <font color='#FF0000'>ERRO - 'Login' e/ou 'Senha' inválido(s)</font>
                    <br><br>
                    <a href='../'><font color='#000000'>VOLTAR</font></a>
                 ";
    #conexao

        mysql_connect ($servidor_bd, $usuario_bd, $senha_bd) or die
            ("
                <br><b>Erro ao conectar</b> - Contate o administrador: <br><br>
                $nome_administrador - $email_administrador <br><br><br>
                <a href='index.html'>Voltar</a>
            ");
        
        mysql_select_db ($nome_bd) or die
            ("
                <br><b>Erro ao conectar no banco de dados</b> - Contate o administrador: <br><br>
                $nome_administrador - $email_administrador <br><br><br>
                <a href='index.html'>Voltar</a>
            ");
    
    ?>

</font>

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

A melhor forma de se verificar se os dados estão corretos é montar logo o SQL verificando o login e senha ao mesmo tempo

$conexao_tabela = ("SELECT * FROM eleitores WHERE login='".$login."' and senha='".$senha."'") or die ("$erro");

E para verificar se os dados são válidos basta verificar a quantidade de registros

Obs.:

Cuidado com SQL Inject

Link para o comentário
Compartilhar em outros sites

  • 0
...
$conexao_tabela = ("SELECT * FROM eleitores WHERE login='$login'") or die ("$erro");
$RS = mysql_query($conexao_tabela);
...
Bom, parei de ler quando cheguei nessa linha, tenta trocar para:
$conexao_tabela = ("SELECT * FROM eleitores WHERE login='$login'");
$RS = mysql_query($conexao_tabela)  or die ("$erro");

Se não der certo ai continuamos lendo até o fim, hehehe

[]'s

J. Neto

Link para o comentário
Compartilhar em outros sites

  • 0

Melhoroo maiis ou menoos com a dica do neto :wacko:

Tipoo, agora, quando digita o 'login' incorreto, e não digita nada na 'senha', ele imprimi a mensagem de erro...

---

MÁS, quando coloca o 'login' incorreto, e digita algo na 'senha' (independentemente de estar correta ou não), ele não faz nada, só exibe uma página em branco (e o correto seria, imiprimir uma mensagem de erro)...

//

E obrigado pela ajuda, até agora não resolveu tudo, mas é melhoor q nadaa :D

Só que do jeito que o Jhonatan me explico, não consegui :wacko:

Editado por Anderson Ferreira
Link para o comentário
Compartilhar em outros sites

  • 0
MÁS, quando coloca o 'login' incorreto, e digita algo na 'senha' (independentemente de estar correta ou não), ele não faz nada, só exibe uma página em branco (e o correto seria, imiprimir uma mensagem de erro)...

Certo, continuando a leitura eu parei novamente aqui:

while ($RF = mysql_fetch_array ($RS))

{

if ($RF["senha"] == $_SESSION["senha"])

{

echo "<meta http-equiv='Refresh' content='0;URL=validacao.php>";

}

else

{

echo "$erro3";

}

}

Tenta mudar para:

if ( $RF = mysql_fetch_array ( $RS ) ){
    do {
        if ( $RF[ "senha" ] == $_SESSION[ "senha" ] ){
            echo "<meta http-equiv='Refresh' content='0;URL=validacao.php>";
        } else {
            echo "$erro3";
        }
    } while ( $RF = mysql_fetch_array( $RS ) );
} else {
    echo "$erro";
}
Só que do jeito que o Jhonatan me explico, não consegui :wacko:
O que o Jhonatan falou (e ele está absolutamente correto) é que o ideal é você fazer seu SELECT já buscando o nome de usuário e senha e tirar fora esse loop while que só consome tempo e processamento:
$conexao_tabela = ("SELECT * FROM eleitores WHERE login='$login' AND senha='$senha'");
if ( $RS = mysql_query($conexao_tabela) ){
    echo "<meta http-equiv='Refresh' content='0;URL=validacao.php>";
} else {
     die( "Login ou senha inválido" );
}

[]'s

J. Neto

Editado por neto.joaobatista
Link para o comentário
Compartilhar em outros sites

  • 0

Vou colocar as duas formas (a do neto e a do jhonatan), qual foi o resultado...

-----------------------------

OBS: O 'login' correto é anderson631, e a 'senha' correta é 000 .

-----------------------------

======

NETO 1

======

LOGIN anderson631 (login correto)

SENHA 000 (senha correta)

RESULTADO: OK - É redirecionado para: validacao.php

LOGIN anderson631 (login correto)

SENHA 111 (senha incorreta)

RESULTADO: OK - É exibida uma mensagem de erro

LOGIN anderson631A (login incorreto)

SENHA 000 (senha correta)

RESULTADO: ERRO - Aparece uma página toda em branca (login.php)

LOGIN anderson631A (login incorreto)

SENHA 111 (senha incorreta)

RESULTADO: ERRO - Aparece uma página toda em branca (login.php)

-------------------------------------------------------------------------------------------------

=============

JHONATAN + NETO

=============

Gostei dessa forma do Jhonantan (implementada com a do neto), mas mesmo o 'login' e a 'senha' estando incorretos, ele redireciona para outra página... (A única forma que ele imprimi a mensagem de erro, é quando não é digitado nada no 'login' ou na 'senha').

Pelo pouco que entendo de PHP, eu troquei aquele:

else
{
die( "Login ou senha inválido" );
}
por:
else
{
echo "Login ou senha inválido";
}

E percebí que ele não está fazendo a verificação do 'login' e da 'senha' dentro do IF... Posso estar errado (imagino que esteja), mas gostaria que me corrigissem...

Obrigado;

Anderson Ferreira

Link para o comentário
Compartilhar em outros sites

  • 0

PERFEITO

Está 100% ótimo, e adorei esta nova forma, pois economiza muito mais espaço!!!

E antes, por exemplo, a senha era '000000', e se digitasse '000', ele informava q tava correta... Agora não, pra poder estar correta, os 6 digitos tem que ser '0'...

OBRIGADO,

Anderson Ferreira

Link para o comentário
Compartilhar em outros sites

  • 0
OBS: O 'login' correto é anderson631, e a 'senha' correta é 000 .

Bom, vamos tentar diferente então:

no seu arquivo CONEXAO.PHP:

abstract class Conexao {
    /**
     * Nome do administrador
     */
    const SYS_ADM    = "Anderson Ferreira / Rafael Pereira";

    /**
     * Email do administrador
     */
    const SYS_MAIL    = "urnaonline@yahoo.com.br";

    /**
     * Mensagem de erro para usuário ou senha inválido
     */
    const SYS_ERR1    = "<font color='#FF0000'>ERRO - 'Login' e/ou 'Senha' inválido(s)</font><br><br><a href='../'><font color='#FFFFFF'>VOLTAR</font></a>";

    /**
     * Mensagem de erro para dados inválidos
     */
    const SYS_ERR2    = "<font color='#FF0000'>ERRO - Dados inválidos</font><br><br><a href='../'><font color='#FFFFFF'>VOLTAR</font></a>";

    /**
     * Nome ou IP do servidor de banco de dados
     */
    const DB_HOST    = "localhost";

    /**
     * Usuário do banco de dados
     */
    const DB_USER    = "root";

    /**
     * Senha do banco de dados
     */
    const DB_PSWD    = "urna";

    /**
     * Nome da base de dados
     */
    const DB_NAME    = "urna_online";

    /**
     * Erro de conexão com o servidor de banco de dados
     */
    const DB_ERR1    = "<br><b>Erro ao conectar</b> - Contate o administrador: <br><br>%s - %s<br><br><br><a href='index.html'>Voltar</a>";

    /**
     * Erro ao selecionar o banco de dados
     */
    const DB_ERR2    = "<br><b>Erro ao selecionar a base de dados</b> - Contate o administrador: <br><br>%s - %s<br><br><br><a href='index.html'>Voltar</a>";

    /**
     * Recurso gerado pela conexão com o banco de dados
     * @var resource
     */
    static private $conn;

    /**
     * Faz a autenticação do usuário
     * @param string $user O nome do usuário
     * @param string $pswd A senha do usuário
     * @return boolean TRUE se o usuário for válido
     */
    static public function authenticate( $user , $pswd ){
        $ret    = false;

        if ( self::connect() ){
            $user    = mysql_real_escape_string( $user );
            $pswd    = mysql_real_escape_string( $pswd );
            $sql    = sprintf( "SELECT * FROM eleitores WHERE ( login='%s' ) AND ( senha='%s' )" , $user , $pswd );

            if ( ( $resp = mysql_query( $sql , self::$conn ) ) ){
                if ( mysql_fetch_array( $resp ) ){
                    $ret = true;
                } else {
                    throw new Exception( self::SYS_ERR1 );
                }
            } else {
                throw new Exception( self::SYS_ERR2 );
            }

            self::close();
        }

        return( $ret );
    }

    /**
     * Fechamos a conexão
     */
    static private function close(){
        if ( self::$conn ){
            mysql_close( self::$conn );
        }
    }

    /**
     * Conecta ao banco de dados
     * @return boolean TRUE se for possível conectar.
     */
    static private function connect(){
        $ret = false;

        if ( ( self::$conn = @mysql_connect( self::DB_HOST , self::DB_USER , self::DB_PSWD ) ) ){
            if ( @mysql_select_db( self::DB_NAME , self::$conn ) ){
                $ret = true;
            } else {
                throw new Exception( self::DB_ERR2 );
            }
        } else {
            throw new Exception( sprintf( self::DB_ERR1 , self::SYS_ADM , self::SYS_MAIL ) );
        }

        return( $ret );
    }
}
No seu arquivo login.php:
require_once( "conexao.php" );

$user = $_POST[ "val_login" ];
$pswd = $_POST[ "val_senha" ];

try {
    if ( Conexao::authenticate( $user , $pswd ) ){
        session_start();

        $_SESSION[ "login" ] = $user;
        $_SESSION[ "senha" ] = $pswd;

        printf( "<meta http-equiv='Refresh' content='0;URL=validacao.php>" );
    } else {
        printf( Conexao::SYS_ERR1 );
    }
} catch( Exception $e ){
    printf( $e->getMessage() );
}

Acho que isso resolve...

[]'s

J. Neto

Editado por neto.joaobatista
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...