Jump to content

Verificar se um user é admin ou não


Jedi Gu@rdi@n
 Share

Recommended Posts

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

Link to comment
Share on other 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. 😛

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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. 😛

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 😄

Link to comment
Share on other 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 😛 .

Agradecia imenso a a juda 🙂 .

Link to comment
Share on other 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
}
Link to comment
Share on other 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
}

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

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
 Share

×
×
  • 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.