Jump to content

Recommended Posts

Posted

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.

Posted

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

Posted

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.

Posted

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

Posted

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

Posted

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

Posted

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.

Posted

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

Posted

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.

Posted

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

Posted

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

Posted

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

Posted

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);
}
}
Posted

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

Posted

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

Posted

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.

Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.