1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Variaveis de sessão php

Discussão em 'Web Development' iniciada por alfinete, 16 de Julho de 2007. (Respostas: 13; Visualizações: 8137)

  1. alfinete

    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.
     
  2. AliFromCairo

    AliFromCairo Power Member

    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: 16 de Julho de 2007
  3. alfinete

    alfinete Power Member

    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
     
  4. msdevweb

    msdevweb Power Member

    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: 17 de Julho de 2007
  5. CoolMaster

    CoolMaster Power Member

    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.
     
  6. msdevweb

    msdevweb Power Member

    Lol, aquilo foi um exemplo, de como fazer um sistema simples.. é claro que conven encriptar a pass e user.

    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.
     
  7. CoolMaster

    CoolMaster Power Member

    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.
     
  8. msdevweb

    msdevweb Power Member

    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.
     
  9. CoolMaster

    CoolMaster Power Member

    Ahh.. hehe, por acaso tambem da para fazer isso sem usar sessões. É a tal coisa, existem varias maneiras.
     
  10. msdevweb

    msdevweb Power Member

    Sim, mas nao vamos estar a falar de ficheiros, bd, etc... :p Acho que a maneira mais "segura" e rapida sao as sessoes :) Ambos concordamos com isso :) Acho, hehe.

    Cumps.
     
  11. alfinete

    alfinete Power Member

    eheheh , ja funciona , brigado por todas as ajudas

    são sempre benvindas

    [Resolvido]
     
  12. anjo2

    anjo2 Power Member

    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?
     
  13. msdevweb

    msdevweb Power Member

    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.
     
  14. anjo2

    anjo2 Power Member

    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
     

Partilhar esta Página