Variaveis de sessão php

alfinete

Power Member
Gostava que alguem me arranjasse um excerto de codigo em php para:


sessão de utilizadores


ou seja comoforme o utilizador abre a mesma pagina onde estão botões, e esses botões activam
conforme o tipo de utilizador a entrar.
 
Boas, segue um exemplo de um botão que fica activo/inactivo consoante o tipo de utilizador:

Código:
<? if ( strcmp($_SESSION["tipo_utilizador"], "Gestor") == 0 ) { ?>
<input type="button" value="Activo" />
<? } else { ?>
<input type="button" disabled="disabled" value="Inactivo" />
<? } ?>
 
Última edição:
nao era bem isso o que eu queria. vou ver se consigo explicar.

dados:

1 base de dados mysql
3 tabelas la dentro
cada tabela tem users e passwords inerentes ao objectivo (e para ser mais perceptivel do meu lado para os users nao estarem todos juntos)

exemplo:

user da tabela 1 faz login
ao fazer login é redireccionado para uma pagina especifica de utilizadores da tabela 1

user da tabela 2 faz login
ao fazer login é redireccionado para pagina especifica de utilizadores da tabela 2

user da tabela 3 faz login
a mesma coisa



questão:

1º que colunas criar a mais em cada tabela (alem da coluna user e da coluna password)
2º como identificar que user faz login (ou seja, como identificar que user X é da tabela X, Y ou Z)

espero ter sido explicito
 
porque nao simplificas as coisas no servidor mysql?

Cria apenas uma tabela com, por exemplo:

campos: USER PASS TIPO

onde no tipo especificas que tipo de user é, por exemplo MASTER, MEDIUM, LOW

depois é so ao fazeres o login, fazer um
$sql="SELECT * FROM `tabela_users` WHERE `USER`=\"$_POST['username']\" AND `PASS`=\"$_POST['password']\";";


//notas que as variaveis username e password que exemplifiqui em cima, sao variaveis vindas de um sumbit de um form :)

$resultado=mysql_query($sql) or die("IMPOSSIVEL EXECUTAR SQL");
depois ves o tipo de login que é

$dados_db=mysql_fetch_array($resultado);

$tipo_de_user=$dados_db['TIPO'];

e tens o teu login, e o tipo de user (medium,low,high) que é :)

depois

if($tipo_de_user=="HIGH") //redirecionas para pagina 1 com um simples javascript window.location
if($tipo_de_user=="MEDIUM") //redirecionas para pagina 2
if($tipo_de_user=="LOW") //redirecionas para pagina 3



depois ´so criares as variaveis na sessao (se quiseres confirmar em cada pagina se o tipo_de_user é permitido nessa mesma pagina)

(antes dos headers colocas session_start(); para poderes definir as variaveis de sessao )


$_SESSION['user']=$_POST['username'];
$_SESSION['pass']=$_POST['password'];
$_SESSION['tipo_sessao']=$tipo_de_user;

depois em cada pagina tens o session_start();
e voila, as variaveis user, pass, e tipo de sessao estao sempre disponiveis

depois en cada pagina verificas se o $tipo_de_user tem permissao para estar nessa pagina.

hummm.... siplifiquei alguma coisa? Falta colocares uns if's no codigo, mas a base é isto :)

cumps.
 
Última edição:
Para que é que precisas de colocar a password na sessão? Normalmente vejo muita gente a faze-lo e não há necessidade nenhuma, ainda para mais no teu exemplo elas tão em plain text.
A password é aquele tipo de campo que serve só para a autentificação inicial e acabou.
 
Lol, aquilo foi um exemplo, de como fazer um sistema simples.. é claro que conven encriptar a pass e user.

"A password é aquele tipo de campo que serve só para a autentificação inicial e acabou."
hum... so serve para a autenticaçao inicial? isso nao tem logica nenhuma.. se só existir uma pagina, isso é logico (mas duvido que muita gente use isso apenas para fazer o login numa pagina), mas como deves imaginar, se tiveres login.php e conforme o login, fazes o redirect para pagina1.php / pagina2.php / pagina3.php. certo?

mas se eu for directo à pagina1.php ou pagina2.php vejo a pagina na mesma, sem password, a nao ser que andes a passar as variaveis por GET ou POST de umas paginas para as outras, se sessoes nao sao seguras, GET's e POST's com pass, muito menos.

Por isso para segurança é bem necessario confirmar o user e pass em cada area do site, verificar as suas permissoes e mostrar o seu conteudo consoante o user. Agora, como fazes isto de uma maneira segura, rapida, e fiavel sem a ajuda de variaveis de sessoes?? Posso estar enganado na minha ironia, mas pensa nisso!

:)

p.s. Claro que podes fazer includes na unica pagina do site (se o site for enorme, ui ui ;p), mas esses includes vao buscar php a algum lado (include1.php), mesmo assim se digitares no browser site.com/include1.php tens o conteudo parcial do teu site, e entao se ocorrer um erro nos includes, expoes os proprio nomes dos includes, e assim fica ainda mais vulneravel.
Opiniao pessoal, isso dos includes pode ser muito util, mas é preciso saber usa-los "com muita segurança".

Cumprimentos.
 
Não é necessário verificares password a cada página nem enviar nada por get/post.
Só tens é que verificar se uma variavel de sessão esta setada para mostrar. Se fores a verificar por password e tudo vais ter que fazer mais uma consulta a bd a validar os dados.

Existem formas de evitar ou tentar proteger ao maximo as sessões de possiveis session hijacks.
 
Não é necessário verificares password a cada página nem enviar nada por get/post.
Só tens é que verificar se uma variavel de sessão esta setada para mostrar. Se fores a verificar por password e tudo vais ter que fazer mais uma consulta a bd a validar os dados.

Existem formas de evitar ou tentar proteger ao maximo as sessões de possiveis session hijacks.

Nao sei se reparaste, eu respondi assim, porque ao ler o teu primeiro post em cima, deu-me ideia que achavas que nao deveria usar sessoes, como eu ate te perguntei como farias isso sem sessoes...

LOl, so com este ultimo post é que percebi que nao usavas os conteudos da pass e user na sessao, mas que continuavas a usar sessoes na mesma. :)

Sorry. :)

Sao as varias maneiras de usar sessoes como metodos de autenticaçao :)

Cumps.
 
msdevweb, e se só tiver um ficheiro para administrar tudo, tenho o sistema de login feito, mas como não uso sessões, quando se faz algo, volta de novo ao login, como faço para que ele continue logado?
 
Nao percebi bem a tua pergunta, usas apenas uma pagina protegida? é isso? mas se alterares algo perdes as variaveis do post nao e? podes resolver isso com variaveis GET, uma variavel apenas a dizer que esta logado, com algo que identifique o utilizador, e aconselho-te seriamente a encriptares essa variavel com pelo menos o base64_encode.
E essa variavel sera sempre transmitida pelo browser, nao é considerado seguro.

Outra maneira poderá ser criares apenas uma variavel de sessao quando o login é confirmado. com por exemplo $_SESSION['autenticado']="ok"; e no inicio da pagina colocar o session_start(); e verificares se a variavel tem o valor de ok. quando o user termina a administraçao/logout unsset($_SESSION["autenticado"]); para "destruires" a variavel

Acaba por ser facil, e muito mais seguro.

seria isto? se nao for, explica-te melhor.

cumps.
 
O site é estilo noticias, e a parte de admin é para inserção, quando é bem inserido abre uma nova pagina a dizer que foi inserida, mas ao voltar para trás como não tenho sessions nem algo que grave o login, tem que fazer o login de novo e queria saber a melhor forma de resolver, o que postaste serve penso eu :) Obrigada
 
Back
Topo