thinkbrunus Posted May 29, 2009 at 11:42 AM Report #268276 Posted May 29, 2009 at 11:42 AM Viva! Estou com uma dúvida na verificação das permissões de um utilizador, ou seja, tendo em conta que um utilizador poderá ter mais que um tipo de permissões estou a tentar uma querie que apresente os dados do utilizador e verifique as suas permissões. O que tenho actualmente é a querie que me retorna os dados de determinado utilizador, e quero que apareçam a ou as permissões dos mesmos a fim de guardar numa variável de sessão para poder restringir os acessos a determinadas páginas num site. Estou a fazer algumas experiências com o join....será que por aqui vou lá?
M6 Posted May 29, 2009 at 12:16 PM Report #268285 Posted May 29, 2009 at 12:16 PM Podes usar left joins, assim se não tiver permissão, o campo fica a null. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
thinkbrunus Posted May 29, 2009 at 01:58 PM Author Report #268311 Posted May 29, 2009 at 01:58 PM Estou aqui com alguma dificuldade em implementar o join, será que poderiam dar uma vista de olhos a ver o que está a falhar... SELECT posto.sigla AS posto,classe.sigla AS classe,apelido,divisao.sigla AS divisao,detalhe.nome AS detalhe,nivelacesso_detalhe.id_nivelacesso FROM utilizador,posto,classe,detalhe,divisao WHERE posto.id_posto=utilizador.id_posto AND classe.id_classe=utilizador.id_classe AND utilizador.id_detalhe=detalhe.id_detalhe AND detalhe.id_divisao=divisao.id_divisao JOIN nivelacesso_detalhe ON detalhe.id_detalhe=nivelacesso_detalhe.id_detalhe É de realçar que um utilizador poderá ter um ou mais tipos de permissão...
M6 Posted May 29, 2009 at 02:52 PM Report #268325 Posted May 29, 2009 at 02:52 PM Assim vais obter uma linha por cada combinação de utilizador - permissão. Não sei se é isso que queres... 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
thinkbrunus Posted May 29, 2009 at 03:37 PM Author Report #268356 Posted May 29, 2009 at 03:37 PM Não, o que pretendo é obter os dados de determinado utilizador e seus privilégios de acesso... Não sei se me estou a explicar bem, por exemplo: SELECT posto.sigla AS posto,classe.sigla AS classe,apelido,divisao.sigla AS divisao,detalhe.nome AS detalhe,nivelacesso_detalhe.id_nivelacesso FROM utilizador,posto,classe,detalhe,divisao,nivelacesso_detalhe WHERE posto.id_posto=utilizador.id_posto AND classe.id_classe=utilizador.id_classe AND utilizador.id_detalhe=detalhe.id_detalhe AND detalhe.id_divisao=divisao.id_divisao AND detalhe.id_detalhe=nivelacesso_detalhe.id_detalhe AND login ="xxx" Esta querie dá-me as permissões do utilizador em duas linhas...ora o que pretendo é salvar estas duas linhas numa variável de sessão para mais tarde verificar se o utilizador pode aceder a determinada secção ou não. Começo a ver que isto ás tantas na tem nada a haver com SQL e sim com manipulação de dados no PHP... Qual a tua opinião?
M6 Posted May 29, 2009 at 09:37 PM Report #268456 Posted May 29, 2009 at 09:37 PM Exacto, dá-te uma linha por permissão, tal como te havia dito no post acima. O que necessitas é de converter linhas em colunas, mas não consegues fazer isso de forma dinâmica numa query SQL. Tal como tens a query, podes percorrer, no PHP, todas as linhas até obteres um novo utilizador, todas essas linhas percorridas vais coleccionando as várias permissões do utilizador. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
TheDark Posted May 30, 2009 at 12:02 AM Report #268493 Posted May 30, 2009 at 12:02 AM Precisas mesmo de guardar esses dados todos? Não era melhor pedires só o nivelacesso_detalhe.id_nivelacesso? Desaparecido.
thinkbrunus Posted June 8, 2009 at 10:49 AM Author Report #270662 Posted June 8, 2009 at 10:49 AM Desde já quero agradecer pelos vossos conselhos! Exacto, dá-te uma linha por permissão, tal como te havia dito no post acima.O que necessitas é de converter linhas em colunas, mas não consegues fazer isso de forma dinâmica numa query SQL. Tal como tens a query, podes percorrer, no PHP, todas as linhas até obteres um novo utilizador, todas essas linhas percorridas vais coleccionando as várias permissões do utilizador. Estava com essa ideia, mas com algumas dúvidas...acho que terei mesmo de percorrer todas as linhas e guardar as várias permissões do utilizador. Precisas mesmo de guardar esses dados todos? Não era melhor pedires só o nivelacesso_detalhe.id_nivelacesso? Sim dava jeito, visto que é um sistema de login. Desta forma numa querie e apenas neste processo recolho toda a informação necessária sobre o utilizador. Achas má ideia?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now