Jump to content
AngeloLopes

[Resolvido] Fazer login com tipos

Recommended Posts

AngeloLopes

Eu ja fiz o login em php, ele ja vai a base de dados, e verifica se sao iguais o nome de utilizador e a password, se for ele entra se nao for ele nao entra.

E tambem ja tenho para ver se o site ja tem uma sessao iniciada, pois se ecrever no url, o site do admin vai dar uma mensagem de erro a dizer que nao tem sessao iniciada.

No entanto falta-me uma coisa que me esta a fazer confusão, isto tambem porque sou novato em php, que é:

Eu gostava que o site no login, verificase se o utilizador que entrou com a sua conta, era so e unicamente utilizador ou se era administrador, porque o admin tem funcoes diferentes dentro do site. Vou meter aqui o meu codigo de login.php

<?php
include 'init.php';
//CONSULTA DO UTILIZADOR

 $consulta="Select * from login where utilizador='" . $_POST['utilizador'] . "' and pass='" . $_POST['password'] . "'";
 $resultado=mysql_query($consulta);
if (mysql_num_rows($resultado)>0) //SE O EMAIL E A PASSWORD COINCIDIREM
{

//COLOCA NA VARIAVEL LINHA OS DADOS DA CONSULTA
$linha=mysql_fetch_array($resultado);
//COLOCA O UTILIZADOR EM SESSAO
$_SESSION['utilizador']=$linha['utilizador'];
//REDIRECCIONA A PAGINA PARA A PAGINA Admin
header("location: admin.php");
}
else //CASO NAO COINCIDAM
{
//REDIRECCIONA PARA A PAGINA INICIAL REPORTANDO O ERRO
header("location: index.php?erro=1");
}
?>

Share this post


Link to post
Share on other sites
NunoDinis

isso não nos diz grande coisa..

como controlas as permissões dos utilizadores ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
yoda

isso não nos diz grande coisa..

como controlas as permissões dos utilizadores ?

Acho que é isso que o OP quer saber.

@AngeloLopes, existem várias formas. Se te estás a iniciar, ou tens pouca experiência nas linguagens envolvidas, o mais básico é colocares um campo na base de dados dos utilizadores em que defines de alguma forma quem é administrador e quem é utilizador, e no site usas esse valor para verificar se quem está ligado pode executar determinada acção ou não (um if simples chega).

  • Vote 1

Share this post


Link to post
Share on other sites
AngeloLopes

a resposta é mesmo a do yoda mas eu nao fazo ideia como se escreve isso em codigo, a ideia eu ja tinha uma luz agora escrever e que nada mesmo xD

podes-me ajudar?

Share this post


Link to post
Share on other sites
bioshock

Podes por exemplo criar um campo na tabela dos utilizadores, cujo tipo de dados é bit (valores entre 0 e 1), onde vais dizer que o valor 0 equivale a um utilizador comum e o valor 1 equivale a administrador.

Na parte do código, basicamente o que tens de fazer é:

$query = $db->prepare("SELECT username, password, tipo FROM utilizadores WHERE username = ? AND password = ?");
$query->bind_param("ss", $username, $password);
$query->execute();
$query->bind_result($user, $pass, $tipo);
$query->store_result();
if($query->num_rows() == 1){ // login com sucesso..
 if($tipo == 0){
// Utilizador faz algo...
 }else{
// Administrador faz algo...
 }
} // erro ao efectuar login..

http://stuffpinho.com/php-the-way-mysqli-works-part-3-queries/

  • Vote 1

Share this post


Link to post
Share on other sites
AngeloLopes

Podes por exemplo criar um campo na tabela dos utilizadores, cujo tipo de dados é bit (valores entre 0 e 1), onde vais dizer que o valor 0 equivale a um utilizador comum e o valor 1 equivale a administrador.

Na parte do código, basicamente o que tens de fazer é:

$query = $db->prepare("SELECT username, password, tipo FROM utilizadores WHERE username = ? AND password = ?");
$query->bind_param("ss", $username, $password);
$query->execute();
$query->bind_result($user, $pass, $tipo);
$query->store_result();
if($query->num_rows() == 1){ // login com sucesso..
 if($tipo == 0){
// Utilizador faz algo...
 }else{
// Administrador faz algo...
 }
} // erro ao efectuar login..

http://stuffpinho.com/php-the-way-mysqli-works-part-3-queries/

Modifiquei algumas coisas no seu codigo, e so me esta a dar um erro que é no

if($tipo == 0){

nao sei porque, mas o erro que me da é este :

Variable $tipo seems to be uninitialized

----

Alguem me consegue ajudar?

Este é o meu codigo.

<?php 
include 'init.php';   
//CONSULTA DO UTILIZADOR

    $query = "Select * from login where utilizador='" . $_POST['utilizador'] . "' and pass='" . $_POST['password'] . "'";
    $resultado=mysql_query($query);
	    if($query->num_rows() == 1){ // login com sucesso..

		    //COLOCA NA VARIAVEL LINHA OS DADOS DA CONSULTA  
 $linha=mysql_fetch_array($resultado);
 //COLOCA O UTILIZADOR EM SESSAO
 $_SESSION['utilizador']=$linha['utilizador'];
		 if($tipo == 0){
    // Utilizador faz algo...
			 header("location: user.php");
	    }else{
    // Administrador faz algo...
		    header("location: admin.php");
	    }
    } // erro ao efectuar login..
	    else //CASO NAO COINCIDAM 
	    {
 //REDIRECCIONA PARA A PAGINA INICIAL REPORTANDO O ERRO
 header("location: index.php?erro=1"); 
	    }
?>

Share this post


Link to post
Share on other sites
Baia

O bioshok atribuiu o resultado da coluna chamada "tipo" da BD a uma variável também chamada "tipo" e depois comparou.

se a tua coluna da BD se chama tipo, e da forma como tens o teu código, deves de mudar para

if($linha['tipo']== 0){

Edited by Baia

Share this post


Link to post
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

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