Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
<?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 );
}
}Beleza é relativa.
>
Código limpo é mais bonito que código comentado.
/applications/core/interface/imageproxy/imageproxy.php?img=http://ecx.images-amazon.com/images/I/41hKTVXlR4L.jpg&key=85efc76777c12a69a062d5dcbe331f19f905bf6f3e1f4705688456d65ad3ecce" alt="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????
Vale a pena essa livro ai????
Sim vale muito apena! Eu diria que ele é indispensável para qualquer programador.
Aqui uma prévia:
http://www.altabooks.com.br/index.php?dispatch=attachments.getfile&attachment_id=248
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" );
}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.
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 );
}
}Eu comprei esse livro aqui http://www.submarino.com.br/produto/6983188/livro-codigo-limpo-habilidades-praticas-do-agile-software
Não sei se é o mesmo.
Acho que é uma tradução;
Abs
eu uso o mysqli sempre q trabalho com bancos mysql
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.
Beleza. Vou acompanhar o tópico ;)
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 ... ;]
Acho que vai ficar legal se essa função também verificar se o cliente está ativo / inativo e expulsá-lo.
Você está acessando dados, não deve interferir na interface.
Código limpo é mais bonito que código comentado.
/applications/core/interface/imageproxy/imageproxy.php?img=http://ecx.images-amazon.com/images/I/41hKTVXlR4L.jpg&key=85efc76777c12a69a062d5dcbe331f19f905bf6f3e1f4705688456d65ad3ecce" alt="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: