Ricardo Gonçalves Posted June 3, 2012 at 06:10 PM Report #460040 Posted June 3, 2012 at 06:10 PM Boa tarde, estou com um pequeno problema, na minha página tenho um ficheiro de autenticação em que a pessoa se não estiver autenticada no site ou não ter privilégios para tal ele com esta página recaminha para a página inicial . e o problema é na página inicial tenho um sistema de login em que se a pessoa não estiver autenticado aparece o sistema de login, se não se estiver autenticado aparece um menu vertical um menu normal como nos site com o perfil do utilizardor , etc.. para o seu privilégio, e o que acontece é tenho um menu horizontal onde o cliente pode pesquisar o seu produto, e o problema é aqui que está eu tenho que cada página meter o nome do ficheiro de autenticação para ver quem é o utilizador que está a ter acesso á página, neste caso está a dar um problema se tiver autenticado dá tudo lindamente, agora se não estiver autenticado ele não me deixa ver a página e eu quero que ele veja a página. Alguém tem alguma sugestão? é que já tentei dar a volta ao programa mas ele não deixa dar.
pikax Posted June 3, 2012 at 06:26 PM Report #460044 Posted June 3, 2012 at 06:26 PM nao te deixa ver como assim?? metes um if e um else. Ou se ele entrar numa pagina que nao devia de entrar, podes mostrar uma mensagem e redirecionalo para a pagina de login Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Ricardo Gonçalves Posted June 3, 2012 at 07:13 PM Author Report #460063 Posted June 3, 2012 at 07:13 PM o código que tenho na página de autenticação é esta : <?php //Iniciar ou continuar sessão if(!isset( $_SESSION)){ session_start (); if (!isset($_SESSION['autenticado'])){ header('Refresh: 0; URL="index.php"'); echo '<p>Vai ser redireccionado para a página de início em 0 segundos</p>'; echo '<p>Se o browser não redireccionar automaticamente,'. '<a href="index.php?redirect='.$_SERVER['PHP_SELF'].'">Clique aqui</a>.</p>'; die(); } } ?> eu nas páginas tenho que ter isto que é para se o utilizador tiver autenticado aparecer o menu só que á este tal problema se tirar o caminho da autenticação da página qualquer um consegue ver a página, agora se o utilizador tiver autenticado e tiver acesso a essa página em vez de aparecer o menu dele aparece o sistema de login, e não devia. agora se ponho isso um utilizador não autenticado não consegue ver e ando com este problema.
pikax Posted June 3, 2012 at 07:39 PM Report #460071 Posted June 3, 2012 at 07:39 PM se tiver autenticado dá tudo lindamente, agora se não estiver autenticado ele não me deixa ver a página e eu quero que ele veja a página. Deixa-me ver se percebi, se o user tiver autenticado, funciona bem(mostra a pagina lindamente), mas se nao estiver autenticado mostra na mesma a pagina? Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Ricardo Gonçalves Posted June 3, 2012 at 08:06 PM Author Report #460078 Posted June 3, 2012 at 08:06 PM ao contrário. porque é assim quando o user vai ao meu site no lado esquerdo apresenta o sistema de Login e se o user logar na autenticação ve que ele autenticou-se e quem autenticar tem direito a um menu eu vou por em imagem para perceberes melhor. aqui é quando a pesso entra no meu site apresenta o sistema de login: http://img43.imageshack.us/img43/6206/71020888.png agora quando um cliente faz o login fica como está nesta imagem: http://img208.imageshack.us/img208/1542/77022378.png agora por exemplo eu como estou autenticado e for ao menu pesquisar por um produto se tiver aquele codigo que pus no inicio dá perfeitamente, agora aos utilizadores que não estão autenticado ele recaminha a pessoa para a página inicial. Se tirar aquele código ambos entrem, só tem um problema é que em vez de aparecer como está na segunda imagem, não , apresenta como está na primeira apresenta o sistema de login em vez de menu
pikax Posted June 3, 2012 at 08:42 PM Report #460089 Posted June 3, 2012 at 08:42 PM se queres que mostre o que esta na pesquisa tens que tirar a parte onde diz "Ainda nao autenticou no sistema...." pelo o menos na pesquisa, acho que devias de ter funcoes para te ajudar. Incluir em todas as pag quue presisas de verificacao def.php $gLogin=false; //var global para verificar se o login esta feito; $gLogin=verificaAutenticacao(); //funcao verifica se esta autenticado, return true se sim, retorna false se nao; function returnLogin(); //funcao para retornar ao login, caso o user nao tenha permissoes function mostraMensagemLogin(); //mostra a mensagem, a dizer que o user deve-se logar : "Ainda nao autenticou no sistema....etc" alguma pagina protegida require_once("def.php"); if(!$gLogin) //se nao tiver logado { mostraMensagemLogin(); //avisar o user que nao esta logado returnLogin(); //podes redirectionar o user } else { //o codigo da pagina } Pesquisa.php if($gLogin) $nome=getAutUser();//funcao que retorna o nome do user autenticado //mostrar os dados da pesquisa.... //.... //caso queiras mostrar o nome do user basta fazer isto: if($gLogin) printBoasVindas($nome); //imprimir ao de: "User X etc etc etc" se fizeres uma estrutura desta de funcoes, ficas um pouco mais livre de te aparecerem esses erros, em vez de tares a mudar/apagar varias linhas de codigo, basta comentares a funcao, ou apagala. Ate' podes usar objectos para te ajudar nisso. Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Ricardo Gonçalves Posted June 3, 2012 at 09:27 PM Author Report #460119 Posted June 3, 2012 at 09:27 PM ou eu é que não percebi ou expliquei mal aquele menu horizontal que vês na imagem, eu carrego em componentes e aparece todos os componentes que tenho na BD eu para cada componente tenho um página em php em que tem este código no inicio da página: include 'auth.inc.php'; if ($_SESSION['nivel_admin'] <1) { header('Refresh: 0; URL="index.php"'); echo '<p>Vai ser redireccionado para a página de iício em 0 segundos</p>'; echo '<p>Se o browser não redireccionar automaticamente,'. '<a href="index.php?redirect='.$_SERVER['PHP_SELF'].'">Clique aqui</a>.</p>'; die(); } eu que vai verificar se o user está autenticado ou não e vai verificar o seu nivel admin se é 1 ou 3, se eu deixar este código na página está todo bem para o user autenticado está todo bem para quem não se autenticou não ve nada, se tirar este código dá para toda a gente ver só que depois o problema é devia aparecer o menu vertical onde está o sistema de Login e não aparece.
pikax Posted June 3, 2012 at 09:40 PM Report #460128 Posted June 3, 2012 at 09:40 PM cada vez precebo menos o que realmente queres... 😕 Queres que o user que nao esta autentica veja ou NAO veja a pagina??? se tirar este código dá para toda a gente ver só que depois o problema é devia aparecer o menu vertical onde está o sistema de Login e não aparece. porque o teu codigo de login, esta dependente de toda a paginas, devias de separa-los. o modulo de login, nao precisa de saber o nivel de admin, so precisa de saber se esta logado ou nao! Faz so include do auth.inc.php Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Ricardo Gonçalves Posted June 4, 2012 at 02:37 PM Author Report #460293 Posted June 4, 2012 at 02:37 PM querer quero mas se tirar o auth.inc.php o menu não aparece, aparece o sistema de login á pessoa que estiver autenticado. se deixar só o include do auth.inc.php o user que não tiver autenticado não consegue ver a página se for preciso crio um vídeo a explicar o que eu quero depois posto aqui.
pikax Posted June 4, 2012 at 02:41 PM Report #460295 Posted June 4, 2012 at 02:41 PM mostra aqui a parte de codigo de mostrar o menu de login Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Ricardo Gonçalves Posted June 4, 2012 at 04:36 PM Author Report #460350 Posted June 4, 2012 at 04:36 PM eu tenho um ficheiro login.inc.php que tem o seguinte código : <?php $escolha = isset($_SESSION['nivel_admin']) ? $_SESSION['nivel_admin'] : 0; //echo "utilizador: $escolha<br />"; switch ($escolha) { case 0: ?> <form method="post" action="autenticar.php" id="login_user" name="login" style="float: left; width:150px; text-align:center;"> <fieldset style="padding: 15px;"> <legend><b style="color:#80C31C">Área de Clientes</b></legend> <b>Email do utilizador:</b><input type="text" name="email" /> <br /> <b>Palavra Passe:</b><input type="password" name="password" /> <br /><input type="submit" name="submeter" id="submeter" value="Login!" style="margin-left:140px; margin-top: 10px;"> </fieldset> </form> <?php break; case 1: ?> <div id="menu_a"> <div align="left" class="title">CLIENTES</div> <ul> <li class="li_hr_1"><a href="/sitericardo/ver_perfil.php">ver o meu Perfil</a></li> </ul> <div align="left" class="title">PRODUTOS</div> <ul> <li class="li_hr_1"><a href="/sitericardo/ver_produtos.php">ver todos os Produtos</a></li> </ul> <div align="left" class="title">OUTROS</div> <ul> <li class="li_hr_1"><a href="/sitericardo/calculadora.php">Calculadora</a></li> </ul> </div> <?php break; case 3: ?> <div id="menu_a"> <div align="left" class="title">CLIENTES</div> <ul> <li class="li_hr_1"><a href="/sitericardo/ins_clientes.php">Inserir clientes</a></li> <li class="li_hr_1"><a href="alt_clientes.php">Alterar clientes</a></li> <li class="li_hr_1"><a href="/sitericardo/ver_clientes.php">Listar clientes</a></li> </ul> <div align="left" class="title">PRODUTOS</div> <ul> <li class="li_hr_1"><a href="/sitericardo/ins_produtos.php">Inserir Produtos</a></li> <li class="li_hr_1"><a href="alt_produtos.php">Alterar Produtos</a></li> <li class="li_hr_1"><a href="/sitericardo/ver_produtos.php">Listar Produtos</a></li> </ul> <div align="left" class="title">OUTROS</div> <ul> <li class="li_hr_1"><a href="/sitericardo/listar_mensagens.php">Ver Mensagens</a></li> <li class="li_hr_1"><a href="/sitericardo/ins_marcas.php">Registar Marcas</a></li> <li class="li_hr_1"><a href="/sitericardo/calculadora.php">Calculadora </a></li> </ul> </div> <br /> <br /> <?php } ?> aqui apresenta o formulário de login onde depois se autenticar-se e for case:1 (utilizador) aparece um menu se for case:3 (Admin) aparece outro menu. eu quando submeto o formulário ele vai para o autentica.php verificar se existe ou não se existir manda.o para o index e mostra o menu, se não mostra uma mensagem de erro e não apresenta o menu
MASNathan Posted June 4, 2012 at 04:47 PM Report #460354 Posted June 4, 2012 at 04:47 PM se não te importares... podes colocar aqui o ficheiro que usas para a pesquisa?
pikax Posted June 4, 2012 at 08:48 PM Report #460386 Posted June 4, 2012 at 08:48 PM a mensagem de erro e' mostrada aonde? Se for na pagina de pesquisa, basta comentares o codigo, mas se for predefenido, ai ja tens mais trabalho, porque tens que mudar algumas coisas Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Ricardo Gonçalves Posted June 4, 2012 at 09:12 PM Author Report #460392 Posted June 4, 2012 at 09:12 PM mostra na página inicial na página de autenticação tenho isto : if (mysql_num_rows($resultado) > 0) { $linha = mysql_fetch_array($resultado); extract($linha); $_SESSION['id_utilizador'] = $id_utilizador; $_SESSION['utilizador'] = $utilizador; $_SESSION['email'] = $email; $_SESSION['autenticado'] = 1; $_SESSION['nivel_admin'] = $priv; header ('Refresh: 1; URL='.$redirect); echo '<p>Vai ser redireccionado para a página requerida.</p>'; echo '<p>Se o navegador não redireccionar automaticamente, '.' <a href="'.$redirect.'">clique aqui</a>.</p>'; die(); } else { // inserir dados sessao explicitamente para certificar $_SESSION['id_utilizador'] = 0; $_SESSION['utilizador'] = ''; $_SESSION['email'] = ''; $_SESSION['autenticado'] = 0; $_SESSION['nivel_admin'] = 0; $utilizador = ''; $password = ''; $erro = '<p><div class="erro">Forneceu um utilizador inválido e/ou palavra-passe!</div> <br /> Se ainda não se registou <a href="messages.php">clique aqui</a>'; mysql_free_result($resultado); } }
pikax Posted June 4, 2012 at 09:17 PM Report #460395 Posted June 4, 2012 at 09:17 PM mas isso e' utilizado em todas as paginas?? e' tipo um php que fazes include? Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Ricardo Gonçalves Posted June 4, 2012 at 09:56 PM Author Report #460410 Posted June 4, 2012 at 09:56 PM fiz um vídeo a explicar o meu problema se não se perrceber bem diz que eu faço outro melhor http://www.youtube.com/watch?v=7ae2sZYepjs&feature=youtu.be
pikax Posted June 4, 2012 at 10:02 PM Report #460413 Posted June 4, 2012 at 10:02 PM pelo o que eu percebi, se o user nao tiver logado, o site redireciona, certo? Um if e' falso quando o valor e' 0, e verdadeiro quando diferente de 0. O $_SESSION['nivel_admin'] como o user nao esta logado ira' ser 0 e' por isso que ele te redireciona, se comentares da linha 3 'a linha 9 no ficheiro discos.php, devera de funcionar Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Ricardo Gonçalves Posted June 5, 2012 at 10:32 AM Author Report #460501 Posted June 5, 2012 at 10:32 AM aquelas linhas que estão embaixo do auth.inc.php como viste no vídeo se eu tirar o user que não está logado não consegue ver. agora se tirar as linhas e o auth.inc.php ele dá para os dois para os user's que estão autenticados naquela página não teêm o menu aparece o sistema de login porque o objevtivo do auth.inc.php é verificar se o user está autenticado ou não se estiver aparece o menu, se não estiveres aparece o sistema de login.
nunolevezinho Posted June 5, 2012 at 10:38 AM Report #460504 Posted June 5, 2012 at 10:38 AM Penso que tens de fazer um ficheiro diferente de autenticação para esse tipo de página que pretendes que ele veja sem estar logado (ex: discos.php) Ex: auth_discos.inc.php E incluis esse ficheiro no discos.php
pikax Posted June 5, 2012 at 11:43 AM Report #460516 Posted June 5, 2012 at 11:43 AM aquelas linhas que estão embaixo do auth.inc.php como viste no vídeo se eu tirar o user que não está logado não consegue ver. agora se tirar as linhas e o auth.inc.php ele dá para os dois para os user's que estão autenticados naquela página não teêm o menu aparece o sistema de login porque o objevtivo do auth.inc.php é verificar se o user está autenticado ou não se estiver aparece o menu, se não estiveres aparece o sistema de login. tu ao comentares as linhas que eu disse, so nao vais fazer o redirecionamento da pagina, pelo o codigo que meteste aqui o teu menu nem se devia de queixar. Penso que tens de fazer um ficheiro diferente de autenticação para esse tipo de página que pretendes que ele veja sem estar logado (ex: discos.php) Ex: auth_discos.inc.php E incluis esse ficheiro no discos.php Eu acho que nao era necessario, penso que se ele criasse uma funcao para verificar o nivel de admin: auth.php function userIsAuth($nivelNecessario) //redireciona caso o user nao tenha permissoes suficientes { $nivel= iseet($_SESSION['nivel_admin']) ? $_SESSION['nivel_admin'] : 0; if($nivelNecessario<$nivel) { header('Refresh: 0; URL="index.php"'); echo '<p>Vai ser redireccionado para a página de iício em 0 segundos</p>'; echo '<p>Se o browser não redireccionar automaticamente,'. '<a href="index.php?redirect='.$_SERVER['PHP_SELF'].'">Clique aqui</a>.</p>'; die(); } } discos require_onde(auth.php); userIsAuth(0);//ja que o user nao necessita de estar logado! administracao.php require_onde(auth.php); userIsAuth(3);//e' necessario que o user seja admin!!! penso que assim e' muito mais pratico, mas e' necessario mudares algum codigo Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
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