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

NSTuga

Utilizadores de um login em php

44 mensagens neste tópico

Estou a construir uma pagina que necessita de efectuar 3 logins, isto é, um registo para os clientes, outro para os funcionários do estabelecimento e outro para o administrador, todos de forma diferente, para isso tem de haver um campo que os distingue, mas como?  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

poes 1 campo na tabela dos utilizadores que se chama: NivelUtilizador e a cada grupo de pessoas atribuis 1 nivel/valor:

1 - clientes

2 - funcionarios

3 - Admins

fazes 1 mysql_fetch_array ou mysql_fetch_row ou kker coisa e depois na posição do array do campo: NivelUtilizador fazes 1 coisa destas:

<?php
if ($login[5] == "1") {
echo 'Cliente';
}

if ($login[5] == "2") {
echo 'Funcionário';
}

if ($login[5] == "3") {
echo 'Administrador';
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu ja tinho criado esse campo na tabela Utilizadores mas agora coloco esse codigo onde?, é isso que não percebo, lool

	include("connectdb.php");
if($_POST)
{
	$_SESSION['Num_BI'] = $_POST["Num_BI"];
	$_SESSION['Pass_utente'] = $_POST["Pass_utente"];
}
$result=mysql_query("select Num_BI, Num_Eleitor, Nome_utente, Morada_utente, CodigoPostal_utente, Localidade_utente from utentes
					 where Num_BI ='" .$_SESSION['Num_BI']."' and Pass_utente ='".$_SESSION['Pass_utente']."'");
$num=mysql_num_rows($result);
if ($num<1)
{
	echo "<form method=post action=index.php>
			<table align=center>
			<tr><td class=titulo align=center>N.º de B.I.</td></tr>
			<tr><td class=texto align=center><input type=text name=\"Num_BI\"></td></tr>
			<tr><td class=titulo align=center>Palavra-Chave</td></tr>
			<tr><td class=texto align=center><input type=password name=\"Pass_utente\"></td></tr></table><br>
			<input type=submit value=\"  Entrar  \">
		</form><br><br>
		<p class=text1 align=left><font color=#009933><strong>Nota1: </strong></font>Para adquirir a sua palavra-chave dirija-se à junta de freguesia com o seu B.I.</p>
		<p class=text1 align=left><font color=#009933><strong>Nota2: </strong></font>No caso de se esquecer da sua palavra-chave, terá que se dirigir novamente à junta de freguesia.</p>
		</p>";
	exit;
}

Este é o meu código, onde faço o login, é aqui que coloco?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o nivel de utilizador é lido quando verificas o login e concluis que é um utilizador válido...

vai servir para dar acesso a áreas ou dados confidênciais dentro de cada nivel... para isso, antes de mostrares, vamos supor, cada opção do menu, tens de fazer if's para ver o nivel e mostrar ou não a opção do menu...

exemplo em pseudo-code:

//opção de menu para administração

se nivelutilizador=3 (é administrador)

  mostra opção "administração"

//opção de menu documentos internos

se nivelutilizador>1 (é funcionário ou administrador)

  mostra opção "documentos internos"

//opção de menu de consulta de editais da junta (depreendo que seja uma página para uma junta de freguesia)

mostra opção "editais" (não tem if porque é visto por toda a gente)

o mesmo se passa com as áreas ou dados dentro das páginas comuns, porque terás numa mesma página dados que serão necessários que os funcionários tenham acesso mas que o utilizador comum não pode ver... basta fazeres o if antes do código que mostra esses dados para fazer a filtragem...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, por acaso é um website duma junta de freguesia. Obrigado pela dica

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ha ainda outra coisa que não percebo: eu tenho 3 tabelas (Utentes, Funcionários, Administradores), necessito de fazer uma consulta pa fazer login, tenho de fazer uma consulta geral?

tipo

SELECT *
FROM Utentes, Funcionários,Administradores;

É só isto que não percebo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

para fazer o login, convém que tenhas uma tabela só com todos os utilizadores, sejam admins, funcionários ou utentes... assim basta fazer uma query e sabes logo se é válido ou não, não tens de correr as 3 tabelas...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas isso é um bocado dificil, tipo, ponho os atributos (cod_utente, cod_func, cod_admin) ou é a preencher que os junto, tipo numa tabela (username, password)????? nao percebo mesmo nada disto mas tenho de perceber loool :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens uma salsada de codigo...

cria esta tabela

CREATE TABLE `utentes` (
`ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nome` TEXT NOT NULL ,
`morada` TEXT NOT NULL ,
`bi` INT NOT NULL ,
`password` TEXT NOT NULL ,
`nivelutilizador` INT NOT NULL ,
`cod_postal` TEXT NOT NULL ,
`localidade` TEXT NOT NULL 
) ENGINE = innodb;

login.php

include("connectdb.php");
/* varaveis */
$bi =$_POST['num_BI'];
$pass =$_POST['Pass_Utente'];

/* QUERY */
$query = "select * from utentes where bi = '$bi' and password = '$pass'";
$query = mysql_query($query) or die (mysql_error());
$login = mysql_fetch_array($query);

/* CONDIÇÕES PARA O LOGIN */
if ($login[3] == $bi and $login[4] == $pass and $login[6] == "3") {
echo "admin";
session_register(bi_utente);
$_SESSION['bi_utente'] = $bi;
/* + o que queiras */
}
elseif ($login[3] == $bi and $login[4] == $pass and $login[6] == "2") {
echo "funcionarios";
session_register(bi_utente);
$_SESSION['bi_utente'] = $bi;
/* + o que queiras */
}
elseif (($login[3] == $bi and $login[4] == $pass and $login[6] == "1") {
echo "clientes";
session_register(bi_utente);
$_SESSION['bi_utente'] = $bi;
/* + o que queiras */
}

penso que o codigo n tem erros,mas nunca s sabe...

este codigo vai dar-t o nivel de utilizador que estiver na tabela (cliente, funcionario, admin) e vai registar na sessao o BI...

1 - Clientes

2 - Funcionarios

3 - Admins

Logout.php

session_start();
session_destroy();
echo "Saiu com sucesso!";

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

assim se eu quiser introduzir dados, tenho apenas uma tabela é isso?

tipo eu quero inserir um func e um utente, vao pa mesma tabela, assim como o admin. é isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim, e so mudas o valor na celula nivelutilizador entre 1 2 3 ou se kiseres cria mais niveis ;)

como ves passar a query por as 3 tabelas, ia por o processo de login MUITO lento e ias sobrecarregar o servidor SQL, caso tivesses muitas pessoas online, ao mesmo tempo ardia :)

assim é mais simples e tudo :P

só uma coisa, axo que devias guardar a password das pessoas, na base de dados,mas antes passa-la por md5 pa ficar + "camuflada" tipo

Registar.php

$nome = $_POST['nome'];
$morada = $_POST['morada'];
$bi = $_POST['utente_bi'];
$password = $_POST['password'];
$cod_pos =$_POST['cod_postal'];
$localidade =$_POST['localidade'];

/*ATENÇÃO AQUI SFF */
$passe = md5($password);

/* QUERY PARA INSERIR NA BASE DE DADOS */
/* agora o resto ja sabes */

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não li isto tudo, mas... Porquê que tens de ter 3 campos diferentes? Qual a diferença? Só para distinguires o utilizador que está a fazer login? Por exemplo, aqui na Universidade do Minho, grande parte dos sites são para alunos, funcionários, docentes e só existe um login. Podias fazer como cá, que é preceder o numero de aluno/docente/funcionário (no teu caso pode ser outra coisa qualquer) com uma letra especifica, por exemplo, A de aluno, F de funcionário e D de docente.

Só uma ideia...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não li isto tudo, mas... Porquê que tens de ter 3 campos diferentes? Qual a diferença? Só para distinguires o utilizador que está a fazer login? Por exemplo, aqui na Universidade do Minho, grande parte dos sites são para alunos, funcionários, docentes e só existe um login. Podias fazer como cá, que é preceder o numero de aluno/docente/funcionário (no teu caso pode ser outra coisa qualquer) com uma letra especifica, por exemplo, A de aluno, F de funcionário e D de docente.

Só uma ideia...

se lesses aquilo que eu fiz e disse, ja tinha sujerido isso e dado uma solução ;)

mas é assim que se devem fazer as coisas :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se lesses aquilo que eu fiz e disse, ja tinha sujerido isso e dado uma solução :)

Onde? Eu não vi...
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

poes 1 campo na tabela dos utilizadores que se chama: NivelUtilizador e a cada grupo de pessoas atribuis 1 nivel/valor:

1 - clientes

2 - funcionarios

3 - Admins

...

Logo no 2º post... convem ler LOL

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

poes 1 campo na tabela dos utilizadores que se chama: NivelUtilizador e a cada grupo de pessoas atribuis 1 nivel/valor:

1 - clientes

2 - funcionarios

3 - Admins

...

Logo no 2º post... convem ler LOL

Isso não foi o que o Nazgulled sugeriu. :)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim eu sei, ele disse para usar tipo na ID das pessoas para distingir... eu percebi,mas s clhar é menos complicado,como eu disse.. penso eu (n puxando a brasa à minha sardinha)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto, usar uma "tag". Exemplo:

S_djthyrax <- um admin (staff)

D_psiico <- um docente

A_deathseeker25 <- um aluno

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@piisico

Reparei que a maioria dos campos da tabela estão definidos como TEXT e isso não é la muito bom ja que o tamanho dos dados a serem inseridos não são muito grandes por mim criavas assim a tabela

CREATE TABLE `utentes` (
`ID` INT(11) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(255) NOT NULL DEFAULT '' ,
`morada` VARCHAR(255) NOT NULL DEFAULT '' ,
`bi` INT(11) NOT NULL ,
`password` VARCHAR(255) NOT NULL DEFAULT '',
`nivelutilizador` TINYINT(1) NOT NULL DEFAULT '0',
`cod_postal` VARCHAR(255) NOT NULL DEFAULT '',
`localidade` VARCHAR(255) NOT NULL DEFAULT '',
PRIMARY KEY( `ID` ) 
)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@psiico

e eu disse que não li tudo... o post já continha algumas replies e estas eram grandes e eu não estava com paciência para as ler e apenas dei uma sugestão da primeira coisa que me passou pela cabeça.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@piisico

Reparei que a maioria dos campos da tabela estão definidos como TEXT e isso não é la muito bom ja que o tamanho dos dados a serem inseridos não são muito grandes por mim criavas assim a tabela

CREATE TABLE `utentes` (
`ID` INT(11) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(255) NOT NULL DEFAULT '' ,
`morada` VARCHAR(255) NOT NULL DEFAULT '' ,
`bi` INT(11) NOT NULL ,
`password` VARCHAR(255) NOT NULL DEFAULT '',
`nivelutilizador` TINYINT(1) NOT NULL DEFAULT '0',
`cod_postal` VARCHAR(255) NOT NULL DEFAULT '',
`localidade` VARCHAR(255) NOT NULL DEFAULT '',
PRIMARY KEY( `ID` ) 
)

sim, concordo contigo agora que falas... :P

@psiico

e eu disse que não li tudo... o post já continha algumas replies e estas eram grandes e eu não estava com paciência para as ler e apenas dei uma sugestão da primeira coisa que me passou pela cabeça.

sim :) eu ja percebi a tua intenção ;)

mas é criativa a ideia

:P

-----------

mas o sistema k fiz nos outros posts, nao da para o que ele quer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu percebi tudo e obrigado pela ajuda, só que agora falta-me saber uma coisa, como é k vou atribuir ao utente apenas visualizar site e efectuar pedidos, ao funcionários listar esses pedidos, e ao administrador modificar a página????? é a unica coisa que n percebo, e já agora, kuantos ficheiros tenho de criar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

fiz o k o psiico disse e deu-me erro, nao percebo, eu entro e ele nao me mostra nada, porque será?!?!?!? ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

(...) como é k vou atribuir ao utente apenas visualizar site e efectuar pedidos, ao funcionários listar esses pedidos, e ao administrador modificar a página????? (...)

como eu já escrevi antes, funciona exactamente como o sistema que te mostrei para o menu...

se for utilizador nivel 3, mostra tudo...

se for utilizador nivel 2, mostra o que pertence ao nivel 1 e nivel 2...

se for utilizador nivel 1, só mostra o que pertence ao nivel 1...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso eu sei, preciso é do código :P!!!

Já agora, que valores é que ponho no array, tipo: $login[3] == $Num_BI and $login[4] == $Pass and $login[6] == "2" ---> os valores 3 ; 4 ; 6 ---->correpondem a ke? nao percebo

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