Jump to content


Photo

Controle De Acesso


  • Faça o login para participar
5 replies to this topic

#1 rafaelcastro

rafaelcastro

    12 Horas

  • Usuários
  • 294 posts
  • Sexo:Masculino
  • Localidade:Dourados/MS

Posted 25/09/2005, 19:49

Ae grande comunidade...

Preciso colocar um sisteminha de controle de acesso em um site meu...

Acontece o seguinte: eu criei uma tabela com as permissões...
Ex: news, artigos, leis e tal
Se o usuário for ganhar a permissão apenas para news, por exemplo, ele ganha 1 no campo news e 0 em todos os outros.,..

Ok, já consegui criar a tabela e atribuir a permissão para todos os usuários

Agora, não sei como fazer o PHP reconhecer quem está logando e nem como ir no campo news por exemplo e reconhecer que lá está 1 ou 0

Na minha pagina news.php vai ter que ter um comando tipo

if (news==1)
{
todo codigo html
}
{
sai fora
}

Esta dúvida parece ser simples de resolver, então conto com a ajuda dos grandes craques do PHP..

Abraço

#2 ph_Rodrigues

ph_Rodrigues

    Jesus, take me back !!!

  • Usuários
  • 322 posts
  • Sexo:Masculino
  • Localidade:Goiânia-GO

Posted 26/09/2005, 14:08

Quando o usuario digitar o login e senha, faça um SELECT que verifica se ambos estao corretos. Depois faça outro SELECT e veja os dados que tem nas colunas news, artigos, leis e etc deste usuario... aih eh so fazer as comparacoes...
De uma olhada nas funcoes de MySQL caso haja duvidas em usa-las ( http://br.php.net/ma...R/ref.mysql.php )
Flws!! :D
Pedro Henrique de M. Rodrigues <GO-Goiânia>

<----------- JESUS, O PÃO DA VIDA!!! ----------->

Zaplim - Soluções em Internet
Portal Veste Moda Brasil

#3 AbstracrDreams

AbstracrDreams

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Não informado

Posted 26/09/2005, 14:21

tenta fazer assim tbm,
na pagina news.php, poe:

$news = "1";

ai tu faz um SELECT ... e ve se o campo da tabela do user... se ele eh maior que 1 ( > ) ou menor que 1 ( < ), ai tu faz um if basico ....

if($campo_membro > '$news') {

acho q assim da certo !
AbstractDreams
:: Criação e manuntenção de websites
:: Criação e desenvolvimento de layouts
:: Desenvolvimento de banners temáticos
:: Programação de sistemas dinâmicos (PHP/MySQL)

www.abstractdreams.com.br (BREVE)

#4 rafaelcastro

rafaelcastro

    12 Horas

  • Usuários
  • 294 posts
  • Sexo:Masculino
  • Localidade:Dourados/MS

Posted 26/09/2005, 14:45

Não, beleza. A lógica está perfeita... Selecionar o BD e comparar no campo... Beleza, beleza...

Só que como programador iniciante em PHP, estou apanhando...

Não sei qdo tenho que usar
mysql_affected_rows
mysql_fetch_array
mysql_fetch_assoc
mysql_fetch_row
mysql_fetch_object


não consigo, no código, fazer essa comparação...

Estou apanhando por enquanto

#5 rafaelcastro

rafaelcastro

    12 Horas

  • Usuários
  • 294 posts
  • Sexo:Masculino
  • Localidade:Dourados/MS

Posted 26/09/2005, 14:50

É o seguinte: deixa eu colocar o meu código pra vcs verem:

na página de login:
<?
$user = $_POST[user];
$pass = $_POST[pass];
$status = authenticate($user, $pass);
if ($status == 1)
{
session_start();
session_register("SESSION");
session_register("SESSION_UNAME");
$SESSION_UNAME = $user;
header("Location: index.php");
exit();
}
else
{
$erro = "Login ou senha inválidos";
header("Location: logar.php");
exit();
}
function authenticate($theuser, $thepass)
{
include("config.php");
global $connection1;
$connection = @mysql_connect($host, $user, $pass) or die("Não foi possível conectar ao banco de dados - login.php!");
@mysql_select_db($db, $connection) or die("Não foi possível selecionar o banco de dados - login.php!");
$query = "SELECT id from admin WHERE username = '$theuser' AND password = '$thepass'";
$result = @mysql_query($query, $connection) or die ("Error in query: $query. " . mysql_error());
if (mysql_num_rows($result) == 1)
{
return 1;
}
else
{
return 0;
}
}
?>

e em todas as páginas eu coloco pra ver se o usuário se logou:

<?
session_start();
if (!session_is_registered("SESSION"))
{
header("Location: ../admin/logar.php");
exit();
}
?>


beleza, tudo está funcionando perfeitamente

Agora é o seguinte
tenho a tabela news e para o usuário rafael ela tá com o valor de 1 (tenho permissão)
Não sei como fazer essa sessão comparar com o meu campo no banco de dados... parece ser fácil, mas reconheço que estou apanhando um pouco...

abraço

#6 ph_Rodrigues

ph_Rodrigues

    Jesus, take me back !!!

  • Usuários
  • 322 posts
  • Sexo:Masculino
  • Localidade:Goiânia-GO

Posted 26/09/2005, 15:54

Para verificar faça:

$query = "SELECT * FROM admin WHERE username = '$theuser'";//isso depois de ja ter verificado se o login e senha do usuario estao corretos
$result = mysql_query($query);
$dados = mysql_fetch_array($result);
if($dados['news'] == 1){ //verifica se o usuario tem permissao para acessar as news
...
}
...

Blz?? :D

Obs.: Não poste duas vezes seguidas, pois isto é contra as regras. Ao inves disso, use o botao editar.

Edição feita por: ph_Rodrigues, 26/09/2005, 15:59.

Pedro Henrique de M. Rodrigues <GO-Goiânia>

<----------- JESUS, O PÃO DA VIDA!!! ----------->

Zaplim - Soluções em Internet
Portal Veste Moda Brasil




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq