Ir para conteúdo

POWERED BY:

Arquivado

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

paladino_php

Código comentado fica bem mais bonito ^_^

Recommended Posts

<?php

include_once '../../../config/config.php';

 

$_SG[ 'conectaServidor' ] = true;

$_SG[ 'abreSessao' ] = true;

$_SG[ 'caseSensitive' ] = false;

$_SG[ 'validaSempre' ] = true;

$_SG[ 'paginaLogin' ] = URL;

 

if ( $_SG[ 'abreSessao' ] == true )

{

session_start();

}

 

function validaUsuario( $usuario, $senha )

{

global $_SG;

 

$nusuario = addslashes( $usuario );

$nsenha = addslashes( $senha );

 

// Verificar se o e-mail confere com o salvo no BD

$sql_email = " SELECT * FROM rio_usuarios WHERE email = '$nusuario' LIMIT 1; ";

$run_email = mysql_query( $sql_email );

$row_email = mysql_num_rows( $run_email );

 

// Verificar se a senha bate com a salva no BD

$sql_senha = " SELECT * FROM rio_usuarios WHERE senha = '" . sha1( $nsenha ) . "' LIMIT 1; ";

$run_senha = mysql_query( $sql_senha );

$row_senha = mysql_num_rows( $run_senha );

 

// Verificar o status da conta[ativa / inativa]

$sql_status = " SELECT email, status, senha FROM rio_usuarios WHERE email = '$nusuario' AND senha = '" . sha1( $nsenha ) . "' AND status = 1 LIMIT 1; ";

$run_status = mysql_query( $sql_status );

$row_status = mysql_num_rows( $run_status );

 

// Se o e-mail passou no filtro, continua.

if( $row_email > 0 )

{

// Se a senha passou no filtro, continua.

if( $row_senha > 0 )

{

/*

* Se o status passou no filtro, continua.

* Só será possível logar contas ativas.

*/

if( $row_status > 0 )

{

if ( $_SG['validaSempre'] == true )

{

$_SESSION[ 'email_cliente' ] = $usuario;

}

return true;

}

// Mensagem de erro para contas inativas.

else

{

$erros = array( 'erros_box' => 'Sua conta ainda nao foi ativada. Verifique sua caixa de e-mails.' );

echo json_encode( $erros );

}

}

// Mensagem de erro para senha errada.

else

{

$erros = array( 'erros_box' => 'Sua senha esta incorreta+senha' );

echo json_encode( $erros );

}

}

// Mensagem de erro para e-mail errado.

else

{

$erros = array( 'erros_box' => 'Seu e-mail esta incorreto+email' );

echo json_encode( $erros );

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Código limpo é mais bonito que código comentado.

 

41hKTVXlR4L.jpg

 

Para quê servem as 2 primeiras queries ? se a terceira já faz o trabalho delas ?

A sua função hora retorna boolean, hora não retorna, e faz echo.. e a consistência ?

 

Variável global =X

Não use mais mysql_

 

:lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Código limpo é mais bonito que código comentado.

 

41hKTVXlR4L.jpg

 

Para quê servem as 2 primeiras queries ? se a terceira já faz o trabalho delas ?

A sua função hora retorna boolean, hora não retorna, e faz echo.. e a consistência ?

 

Variável global =X

Não use mais mysql_

 

:lol:

 

Vale a pena essa livro ai????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa vlw a dica do livro. :) São queries diferentes para cada campo, uma valida o e-mail, outra a senha e outra o status e diz ao cliente exatamente o que está errado na hora do login. Fiz errado ??

 

 

Não use mais mysql_

 

Porque??



Aproveitando a conversa, essa verificação é válida, está desatualizada, insegura, da pra melhor, está ótima ?

 

 

 
 // Se existir a sessão para o usuário, continua.
 if( isset( $_SESSION[ 'email_cliente' ] ) )
    {
        // busca dados do cliente logado na tabela[usuarios]
        $sql_lojista = " SELECT * FROM usuarios WHERE email = '" . $_SESSION[ 'email_cliente' ] . "'; ";
        $run_lojista = mysql_query( $sql_lojista );
        $row_lojista = mysql_num_rows( $run_lojista );
 
        // se a busca retornou registros, continua.
        if( $row_lojista > 0 )
            {
                $line = mysql_fetch_object( $run_lojista );
            }
         // se não devolve para página de login
        else
            {
                header( "Location: " . URL_R . "login" );
            }
    }
 
 // se não devolve para página de login
 else
    {
        header( "Location: " . URL_R . "login" );
    }
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

a verificação é desnecessária.

vc não precisa fazer as duas primeiras queries.

 

não use mysql_, pq essa extensão é lenta e será descontinuada.

 

 

 

Um dos capítulos do Clean Code e também do Refactoring dizem que comentários do tipo que vc fez, poluem o código, atrapalham, e não deveriam ser feitos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a ignorância Bruno, o que devo usar nesse caso no lugar de mysql_ ?

Quanto ao código, realmente ficou mais limpo depois dessa revisão

 

 

 function validaUsuario( $usuario, $senha ) 
    {
        $nusuario = addslashes( $usuario );
        $nsenha   = addslashes( $senha );
 
        $sql_status = " SELECT email, status, senha FROM rio_usuarios WHERE email = '$nusuario' AND senha = '" . sha1( $nsenha ) . "'  AND status = 1 LIMIT 1; ";
        $run_status = mysql_query( $sql_status );
        $row_status = mysql_num_rows( $run_status );
 
        if( $row_status > 0 )
            {
                $linha_status = mysql_fetch_object( $run_status );
                $status_conta = $linha_status->status; 
 
                if( $status_conta == 0 )
                    {
                        $erros = array( 'erros_box' => 'Sua conta ainda nao foi ativada. Verifique sua caixa de e-mails.' );
                        echo json_encode( $erros );
                    }
                else
                    {
                        $_SESSION[ 'email_cliente' ] = $nusuario;
                    }
            }
        else
            {
                $erros = array( 'erros_box' => 'E-mail ou senha incorretos' );
                echo json_encode( $erros );
            }
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu uso o mysqli sempre q trabalho com bancos mysql

 

http://php.net/mysqli

 

 

Vou tentar chegar em casa e remontar esse seu exemplo, ainda tem algumas coisas que vc pode alterar para melhrar o seu código, como por exemplo:

-> Funções nunca devem imprimir

echo json_encode( $erros );
dessa forma a sua função só pode ser utilizada para saída de dados para o usuário, mas é impossível de ser testada (por não ter retorno, e nem modificar nada dentro do sistema), e não pode ser reutilizada por outras funções.

 

Por exemplo, uma função que checa se o usuário pode logar, poderia usar o retorno dessa função acima, desde que ela retornasse, e não imprimisse.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que vai ficar legal se essa função também verificar se o cliente está ativo / inativo e expulsá-lo. Vou ver aqui o que dá pra ser feito com o que já tenho e já volto ... ;]

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.