Validação de Usuários utilizando Sessions e MySQL
Este artigo tem a finalidade de explicar os tratamentos de sessions em PHP utilizando banco de dados MySQL. Muitos usuários se questionam como utilizar sessions e verificar se o usuário existe ou não no banco de dados. Com isso, irei tentar explicar como fazer um esquema de login utilizando sessions e MySQL buscando o público alvo iniciante que está com problemas na hora de montar as sessões com o seu banco de dados.
Antes de começar, gostaria de deixar bem claro que não vou usar firulas nos scripts, pois somente irei demonstrar a função deste. Vamos pensar na tela de login onde o usuário entrará com o login e a senha. Bom, a idéia principal seria criar a sessão USUARIO para que todos os scripts utilizem esta mas já temos que pensar na volta, ou seja, quando o usuário sair do sistema. Então, o script de login começa assim?
script index.php:
Agora vamos registrar o usuário na sessão e entrar no sistema.
script verifica_sessao.php:
Após ter registrado este usuário na sessão, o sistema tem que validar em todos os scripts se este usuário e senha existe realmente no banco, da seguinte maneira:
script principal.php:
Bom pessoal, como disse esta é uma maneira simples de validar usuários no seu sistema mas não pode esquecer de que todos os scripts tem que ter esta checagem senão não dá certo.
A intenção foi a das melhores e espero ter ajudado. Abraço a todos.
Antes de começar, gostaria de deixar bem claro que não vou usar firulas nos scripts, pois somente irei demonstrar a função deste. Vamos pensar na tela de login onde o usuário entrará com o login e a senha. Bom, a idéia principal seria criar a sessão USUARIO para que todos os scripts utilizem esta mas já temos que pensar na volta, ou seja, quando o usuário sair do sistema. Então, o script de login começa assim?
script index.php:
<?php // se a sessão existir, vou destrui-la. if ($USUARIO) { session_destroy(“USUARIO”); } echo “<form method=post action=verifica_sessao.php>”; echo “Login<input type=text name=login><br><br>”; echo “Senha<input type=password name=senha><br><br>”; echo “<input type=submit value=INICIAR SESSAO><br><br>”; echo “</form>”; ?>
Agora vamos registrar o usuário na sessão e entrar no sistema.
script verifica_sessao.php:
<?php $USUARIO[0] = $login; $conc = $login.$senha; $USUARIO[1] = $senha; $session_register(“USUARIO”); ?> <script language="Javascript"> <!-- window.open("principal.php","_parent"); //--> </script>
Após ter registrado este usuário na sessão, o sistema tem que validar em todos os scripts se este usuário e senha existe realmente no banco, da seguinte maneira:
script principal.php:
<?php session_start(); // estou inicializando a sessão $login = $USUARIO[0]; // estou pegando o valor gravado na sessão USUARIO na posição 0 (zero) $senha = $USUARIO[1]; $sql = ”SELECT nome FROM tabela_usuarios WHERE usr=’$login’ AND passwd=’$senha’”; include “conexao.inc”; // imaginando que aqui estou conectando no banco com host, usuário, senha e base de dados e retornando uma variável $cone com a conexão $logado = mysql_fetch_array(mysql_query($sql,$cone)); if ($logado[0]) { echo “Seja bem vindo usuário $logado[0]”; // boas vindas com o nome do usuário // ou poderia montar a pagina dinâmica ou estática, dependendo do problema. } else { echo “<a href=index.php target=_parent>Usuário Inexistente</a>”; } ?>
Bom pessoal, como disse esta é uma maneira simples de validar usuários no seu sistema mas não pode esquecer de que todos os scripts tem que ter esta checagem senão não dá certo.
A intenção foi a das melhores e espero ter ajudado. Abraço a todos.
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\sistema_historico\principal.php on line 8
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\sistema_historico\principal.php on line 8
O erro é na linha abaixo:
$logado = mysql_fetch_array(mysql_query($sql,$cone));
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\sistema_historico\principal.php on line 8
O erro é na linha abaixo:
$logado = mysql_fetch_array(mysql_query($sql,$cone));
15/05/2007 9:21am
(~17 anos atrás)
Parabéns Italo! Mt bom o tutorial!
Só tenho dúvida quanto ao logout. Quando eu volto pra página de login e entro com outro usuário, a session continua gravada com o usuário anterior.
Como eu faço pra logar com outro usuário sem ter q fechar a janela????
Só tenho dúvida quanto ao logout. Quando eu volto pra página de login e entro com outro usuário, a session continua gravada com o usuário anterior.
Como eu faço pra logar com outro usuário sem ter q fechar a janela????
19/07/2006 4:18am
(~18 anos atrás)
Gente eu estou com a seguinte dúvida. Por exemplo, eu tenho uma página que roda um script php de validação de usuários com sessions e no meu script tem uma linha tipo a desse artigo que é o session_destroy(); e eu fiquei em dúvida se por acaso um usuário se loga no sistema ai depois vem outro e se loga mas ai pra se logar, ele acessa o script que tem a linha destroy bom, em fim, o que eu quero saber é se um usuário pode fechar uma session que um outro abriu se ele rodar o script com session_destroy.
Bom, obrigado pela ajuda.
Bom, obrigado pela ajuda.
31/03/2006 12:10pm
(~18 anos atrás)
tentei varias vezes mais infelizmente o erro é o mesmo:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\arquivos de programas\apache group\apache\htdocs\site\admin\principal.phpon line 19 ja mudei as variaveis, e nada! o q acontece?
Vi algo no seu codigo q não entendi, em vez de variavel $conc = $login.$senha;(verifica_sessao.php) não seria $cone = $login.$senha;? Valeu e tenha um bom feriado.
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\arquivos de programas\apache group\apache\htdocs\site\admin\principal.phpon line 19 ja mudei as variaveis, e nada! o q acontece?
Vi algo no seu codigo q não entendi, em vez de variavel $conc = $login.$senha;(verifica_sessao.php) não seria $cone = $login.$senha;? Valeu e tenha um bom feriado.
14/11/2005 9:15am
(~19 anos atrás)
Não sei pra que tanta tempestade num copo dagua, uma simples verificaçao de caracters QUE NAO DEVEM SER lidos ja resolvem este poblema de sql injection
if (strlen(ereg("[(.#$%&*,;.!?)]", $usuario)) != 0) {
echo "<script>window.alert(\"Por razões de segurança você não pode usar estes caracters no usuário (.#$%&*,;.!?)!, tente novamente!\");</script>";
echo "<meta http-equiv='refresh' content='0;URL=index.php'>";
exit; }
quero ver alguem "burlar a segurança" com esta regra...
abraços a todos os companheiros do phpbrasil
if (strlen(ereg("[(.#$%&*,;.!?)]", $usuario)) != 0) {
echo "<script>window.alert(\"Por razões de segurança você não pode usar estes caracters no usuário (.#$%&*,;.!?)!, tente novamente!\");</script>";
echo "<meta http-equiv='refresh' content='0;URL=index.php'>";
exit; }
quero ver alguem "burlar a segurança" com esta regra...
abraços a todos os companheiros do phpbrasil
28/10/2005 11:39am
(~19 anos atrás)
Olá, estou com o seguinte erro
Warning: Cannot send session cache limiter - headers already sent (output started at C:/XITAMI/webpages/teste/verifica_sessao.php:1) in C:/XITAMI/webpages/teste/verifica_sessao.php on line 2
Alguém pode me ajudar a resolver???
grato
Warning: Cannot send session cache limiter - headers already sent (output started at C:/XITAMI/webpages/teste/verifica_sessao.php:1) in C:/XITAMI/webpages/teste/verifica_sessao.php on line 2
Alguém pode me ajudar a resolver???
grato
23/08/2003 9:01pm
(~21 anos atrás)
Até então eu utilizava um controle de usuários com session bastante simples sujeito a falha de segurança.
Juntei o artigo do Italo, mais as opniões e dicas dos colegas Rafael Farias e Ricardo Guedes e melhorei e muito meu controle de usuários. Valeu Pessoal!!!
Juntei o artigo do Italo, mais as opniões e dicas dos colegas Rafael Farias e Ricardo Guedes e melhorei e muito meu controle de usuários. Valeu Pessoal!!!
06/07/2003 6:12pm
(~21 anos atrás)
Vc pode fazer isso com um if.
se usuario não estiver logado entre na página de login, caso já esteja logado, entre na pagina.
<?php
if ($usuario=="") {
echo "<META Http-equiv='refresh' content='0;url=login.php>";}
else {
echo "<META Http-equiv='refresh' content='0;url=index.php>";}
?>
bem, este é um php bem simples, só para te dar uma ideia de como pode fazer.
se usuario não estiver logado entre na página de login, caso já esteja logado, entre na pagina.
<?php
if ($usuario=="") {
echo "<META Http-equiv='refresh' content='0;url=login.php>";}
else {
echo "<META Http-equiv='refresh' content='0;url=index.php>";}
?>
bem, este é um php bem simples, só para te dar uma ideia de como pode fazer.
19/02/2003 1:19pm
(~22 anos atrás)
Rodrigo,
Dê uma olhada no ini_set() se é possivel alterar runtime no server:
http://www.php.net/manual/pt_BR/function.ini-set.php
Ler os comentários (em ingles).
Dê uma olhada no ini_set() se é possivel alterar runtime no server:
http://www.php.net/manual/pt_BR/function.ini-set.php
Ler os comentários (em ingles).
16/01/2003 6:06am
(~22 anos atrás)
Que faço?
Código:
$USUARIO[0] = $usuario_login;
$USUARIO[1] = $usuario_senha;
$conc = $usuario_login.$usuario_senha;
session_register("USUARIO");