• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Jedi Gu@rdi@n

Verificar se um user é admin ou não

11 mensagens neste tópico

Tou a trabalhar num projecto e keria k kuando um utilizador se autentica-se fosse verificado se este eraum user normal ou admin, caso fosse admin abriria uma pagina de administração.

Como posso fazer isso?

Tentei criar uma tabela à parte dos users normais com a pass e o login do administrador, mas ainda n coonsegui k isto desse, agradecia a ajuda porke tenho k entregar iso 2ª feira e n sei k fazer, so me falta msm esta mrd, de resto ta td.

Cumps e obg pela atenção :P .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma única tabela:

USER ; PASS ; PERMS

Depois inseres assim:

INSERT INTO tabela (user, pass, perms)
VALUES ('djthyrax', 'portugal-a-programar.org', 'admin')

Vais alterando o status consoante o nível de permissões. Imaginemos, davas perms 'admin' para administrador, 'user' para utilizador comum. Depois, pegavas no resultado desta query:

SELECT * FROM tabela WHERE user = 'djthyrax' AND pass='portugal-a-programar.org'

E no loop do mysql_fetch_array,

if($r['perms'] == 'admin'){
//mostrar admin
}else{
//mostrar user
}

Existem na secção vários tópicos sobre isso, procura. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma única tabela:

USER ; PASS ; PERMS

Depois inseres assim:

INSERT INTO tabela (user, pass, perms)
VALUES ('djthyrax', 'portugal-a-programar.org', '1')

Vais alterando o status consoante o nível de permissões. Imaginemos, davas perms 'admin' para administrador, 'user' para utilizador comum. Depois, pegavas no resultado desta query:

SELECT * FROM tabela WHERE user = 'djthyrax' AND pass='portugal-a-programar.org'

E no loop do mysql_fetch_array,

if($r['perms'] == 1){
//mostrar admin
}else{
//mostrar user
}

Existem na secção vários tópicos sobre isso, procura. :P

Modifiquei o teu post, porque tinhas várias incoerencias.

Se definiste que a table era User, pass, status, não fazia sentido estares a adicionar nada às perms que não exisitiam.

E também não fazia sentido $r['perms] == 'admin' se no INSERT a cima puseste as perms = 1 :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vamos a ver se isto da ou n, sou iniciante nisto ainda :).

É assim eu tenho as funçõe necessarias tds num fucheiro chamado "functions.php" e chamo-o kuando preciso.

Esta é a funçao de autenticação dos users.

Acrescentei o $perm, pois n tinha.

<?php

function autentica($login, $password, $perm){
include('dados_bd.php');


// abrir uma conexão à BD
   $connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
   
   // seleccionar BD
   mysql_select_db($db) or die ("Unable to select database!");
   
    // criar a consulta para validar o login e password
   $query = "SELECT * FROM utilizadores WHERE nome = '".$login."' AND password = '" .$password. " AND perm = '" .$perm. "'";

 // executar consulta
   $result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());
   
    // se alguma linha resultar em $result é pk os dados estão correctos
   if (mysql_num_rows($result) >0) {
   
   	while ($row = mysql_fetch_object($result)) {
   		// criar uma sessão para o utilizador em causa
    		$_SESSION['user'] = $row->login;
		$_SESSION['login']='true';
    		if ($_SESSION['user']);
		}
   	return true;
   }
   else {
      // Se não houver linas de resultado
      // authenticação falhou
      return false;
   }
    
    // libertar a memória
    mysql_free_result($result);
    
    // fechar a conexão
    mysql_close($connection); 
}

E agora este codigo:

if($r['perms'] == 'admin'){
//mostrar admin
}else{
//mostrar user
}

Meto aki ou no ficheiro onde chamo as funçoes (registar.php) ?

codigo do registar.php:

<?php
include('functions.php');

if (isset($_POST['Registar'])){
	$login = $_POST['login'];
	$password = sha1($_POST['password']);

if (existe_utilizador($login)==false){

	if (insere_utilizador($login,$password)){

?>
<!--Página de sucesso de registo-->
<html>

<head>
<title>Registado</title>
</head>

<body background = "utilizador_reg.jpg">

</body>

</html>
<!--fim de página-->	


<?php
	}
	else
		echo "Ocorreu um erro na inserção dos dados.";
}
else
?>
		<body background = "existe.jpg">
<?php
}
else{
?>

<!--Página normal ou de falhanço-->
<html>
<head>
<meta http-equiv="Content-Language" content="pt">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Main</title>
</head>

<body leftmargin="0" rightmargin="0" topmargin="0" >
<table background="../html/main.jpg" height="387" width="543" align="center">
<form action="registar.php" method="POST">
<tr align=center valign=top><td>
<table border="0" width="100%" id="table1">
	<tr>
		<td> </td>
		<td> </td>
		<td width="56"> </td>
		<td width="44">
		<p align="right"><b>Registar</b></td>
		<td width="100"> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
	</tr>
	<tr>
		<td height="22"> </td>
		<td height="22"> </td>
		<td width="56" height="22"> </td>
		<td width="44" height="22"> </td>
		<td width="100" height="22"> </td>
		<td height="22"> </td>
		<td height="22"> </td>
		<td height="22"> </td>
		<td height="22"> </td>
		<td height="22"> </td>
	</tr>
	<tr>
		<td> </td>
		<td> </td>
		<td width="56" align="left">Login:</td>
		<td width="44"><input type="text" name="login" size="20"></td>
		<td width="100" rowspan="2">
		<input type="submit" value="Registar" name="Registar" style="float: left"></td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
	</tr>
	<tr>
		<td> </td>
		<td> </td>
		<td width="56" align="left">Password:</td>
		<td width="44"><input type="password" name="password" size="20"></td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
	</tr>
	<tr>
		<td> </td>
		<td> </td>
		<td width="56"> </td>
		<td width="44">
		<?php
			if ($erro){
				echo $erro;
			}
		?>
		</td>
		<td width="100"> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
	</tr>
	<tr>
		<td> </td>
		<td> </td>
		<td width="56"> </td>
		<td width="44"> </td>
		<td width="100"> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
	</tr>
	<tr>
		<td> </td>
		<td> </td>
		<td width="56"> </td>
		<td width="44"> </td>
		<td width="100"> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
	</tr>
	<tr>
		<td> </td>
		<td> </td>
		<td width="56"> </td>
		<td width="44"> </td>
		<td width="100"> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
	</tr>
	<tr>
		<td> </td>
		<td> </td>
		<td width="56"> </td>
		<td width="44"> </td>
		<td width="100"> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
	</tr>
	<tr>
		<td> </td>
		<td> </td>
		<td width="56"> </td>
		<td width="44"> </td>
		<td width="100"> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
	</form>
	</tr>
</table>
</td></tr>
</table>
<?php
}
?>
</body>

</html>

Dsc la mas a minha ignorancia mas inda tou mt verde :P.

Agradecia imenso a a juda :).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eeeia, que post com tanto código...

Bem, quanto o djthyrax referiu uma tabela com uma coluna PERM, a ideia é guardares aí o nível de permissão do utilizador para o ires buscar durante o login. Portanto, a tua função não precisa do argumento $perm:

function autentica($login, $password) {

//Ligar a base de dados, etc etc...

//Depois, a parte de validar propriamente dita
if (mysql_num_rows($result) >0) {
	//Buscar o unico resultado (espero bem que a coluna 'nome' seja UNIQUE... =)
	$row = mysql_fetch_object($result);
	//Actualizar os dados da sessao
	$_SESSION['user'] = $row->login;
	$_SESSION['login']='true';
	$_SESSION['perm'] = $row->perm;
	return true;
} else {
	// Autenticacao falhou
	return false;
}
}

Como estás a usar sessões, usa session_start() no topo das tuas páginas para que a informação que guardares em $_SESSION esteja disponível. Assim, sempre que haja uma parte da página que queiras mostrar apenas a utilizadores com determinado nível de permissões fazes o que o djthyrax disse (mas neste caso usas o conteúdo de $_SESSION["perm"]:

if($_SESSION['perms'] == 1){
//Mostrar conteúdo para administradores
}else{
//Mostrar conteúdo para utilizadores normais ou não registados
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ja pus isto a funcar.

Guardei o nome do user em $_SESSION['nome'] e dps foi só verificar se o era igual a 'admin'.

if ($_SESSION['nome']=='admin'){
pagina admin
}
else{
codigo user
}

cumps e obg pela ajuda :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É uma solução, mas não é escalável. Se eventualmente quiseres adicionar novos administradores, não o podes fazer. Por mim ia com a ideia da coluna PERMS  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É uma solução, mas não é escalável. Se eventualmente quiseres adicionar novos administradores, não o podes fazer. Por mim ia com a ideia da coluna PERMS  ;)

Isso é fácil de remendar:

$admins = array('administrador', 'staff', 'lolada');
if(in_array($_SESSION['nome'], $admins)){
//admin
}else{
//normal
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, mas assim tens de alterar o código quando adicionas um novo... é mto mais prática a solução que foi dada da coluna ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, mas assim tens de alterar o código quando adicionas um novo... é mto mais prática a solução que foi dada da coluna ;)

Eu disse para remendar o que ele tinha, o ideal era com a tabela. :P
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora