+1

Autenticação de usuário com banco de dados e cookies

criado por Ronald Huppers em 01/11/2003 11:31pm
Para a utilização deste código, tomo por base que você tenha uma página contendo um form com ao menos dois campos (usuário e senha).

<?php
// Em primeiro lugar iremos criar as variáveis $usuario e $senha que
// irão resgatar os valores do form por meio do POST
$usuario = $_POST["Usuario"];
$senha = $_POST["Senha"];

// Após criamos a consulta SQL para conferir os dados digitados se
// estão de acordo com os dados cadastrados do usuário, consulta esta
// que ficará armazenada em uma variável posteriormente resgatada.
$sql = "SELECT IDUSUARIO, USUARIO, SENHA  FROM USUARIOS  WHERE USUARIO = '$usuario' AND SENHA = '$senha'";

// Agora iremos criar uma variável chamada $rs (o que é muito utilizado
// por quem programa em ASP pois faz lembrar um RecordSet, objeto
// ADODB), o que nada mais é do que a instrução que irá executar a
// nossa consulta, chamando a string de consulta e a string de conexão para tanto.
$rs = ibase_query($conn, $sql);

// Caso haja algum registro retornado, ou seja, caso coincida com os
// dados digitados no form de login, iremos criar um uma array
// associativa que corresponderá ao registro retornado. Mas e se
// existir mais de um usuário? Aí você fez o seu sistema de inclusão de
// usuários de forma muito ruim que não conseguiu restringir o cadastro
// de usuários com mesmo username ou senha. Mas você pode substituir
// esta parte para que o sistema faça a comparação com um único usuário,
// tipo, = 1.
if (ibase_num_fields($rs) != ""){
    $rsUser = ibase_fetch_assoc($rs);

    // Agora criamos o cookie que irá levar durante todo o período de sua
    // existência, o número do Id do usuário cadastrado na base de dados,
    // definindo como nome do cookie Log_ID, buscando como valor, o
    // correspondente ao campo Id na tabela usuários que será devidamente
    // extraído da array anteriormente criada, determinando, ainda, como
    // tempo limite o período de 1 dia (mas isto pode ser bem menor), como
    // domínio o domínio corrente ("/"), como página, todas as páginas ("")
    // e como domínio seguro (HTTPS) determinamos 0 para que rode dentro de
    // um domínio sem conexão segura.
    setcookie ("Log_ID", $rsUser["IDUSUARIO"], time()+86400, "/" , "", 0);

    // Caso a consulta retorne um registro, será gravado o cookie e
    // devidamente redirecionado para uma página de confirmação qualquer.
    header ("location: ok.php"); 

    // Caso contrário, será redirecionado para uma página de erro.
} else {
    header ("location: erro.php"); 
}

// Agora liberamos da memória tanto o resultado gravado na string $rs
// quanto a string de conexão.
ibase_free_result($rs);
ibase_close($conn);
?>

Comentários:

Mostrando 1 - 7 de 7 comentários
fccd disse:
O mais correto é sessions por ter a segurança do Servidor Web!
10/01/2008 11:14am (~16 anos atrás)

Willian Silva disse:
Eu prefiro usar as sessions mesmo. Não gosto de correr riscos.
04/07/2006 10:06pm (~18 anos atrás)

Davi Santos disse:
Realmente é um script bem simples e ideal para fins didáticos, mas vale lembrar que a senha transita crua pela internet.
Um primeiro passo seria usar um hash (uma funcao em javascript para transformar a senha em um código ilegível) ao invés da senha.
No mysql existe a função MD5 para isso:
insert into TABELA set senha=MD5('minhasenha'), nome='eumesmo'
E no javascript usa-se qualquer implementacao
de MD5 que se encontra facilmente na internet.
16/11/2004 8:58am (~19 anos atrás)

Bianor Neto disse:
Posso eu usar este código, claro q adaptado para mysql para fazer a autenticação de um determinado usuário no banco de dados e este retornar a parte expecífica do usuário, tipo, contéudo, endereço?
21/03/2004 8:46am (~20 anos atrás)

Diogo Gomes disse:
Sua observação está perfeita para um script que fosse inserir um dado qualquer no BD, ainda acrescento a função trim(), para a economia de espaço. O exemplo do artigo é apenas para verificação de usuário, daí você utilizaria:
$usuarioaut=stripslashes($usuario);
$senhaaut=stripslashes($senha);
Considerando que as duas variáveis($usuario e $senha)tenham vindo de um BD que teve seus dados 'escapados' pelo addslashes();
11/11/2003 5:17pm (~20 anos atrás)

Lembrando da segurança já que tivemos um artigo recente sobre o assunto
na página dois do artigo em

$usuario = $_POST["Usuario"];
$senha = $_POST["Senha"];

é interessante colocar

$usuario = addslashes($_POST["Usuario"]);
$senha = addslashes($_POST["Senha"]);

e fazer alguns outros tipos de validação..
mesmo um script simples tem que se previnir


Abraços
06/11/2003 8:57pm (~20 anos atrás)

Além de curto ele explica muito do script com os comentários tá de parabéns :)

sds
03/11/2003 1:09am (~20 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)