Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

twpesquisa

acesso restrito

Recommended Posts

Caros amigos,alguém poderia me ensinar a fazer uma ÁREA RESTRITA.O que eu relamente preciso: Quando o usuário acessar uma área determinada, deverá ser validado o USUÁRIO, SENHA E ARÉA.USUÁRIO: NOME DE USUÁRIOSENHA: SENHA DO USUÁRIOÁREA: RH, DIRETORIA, CADASTRO e etc.Então, o usuáio irá acessar o LINK RH, ao informar o seu usuario e senha deverá ser validade se ele tem acesso à esta área. :mellow: como faço isso tudo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for ensinar é simples!Mas se precisar de exemplo da um grito que faço um exemplo pra você!Você antes tem que verificar algumas coisas, por exemplo, se o usuário vai ter mais que uma area, que ele se loge como diretoria ele tem acesso a tudo por exemplo. Se for assim você tem que fazer alguns relacionamentos no seu banco, mais tudo simples!você vai ter a tabela de usuarios, a tabela de area e a tabela relacionando os usuarios com as areas!Fica meio complicado a gnete te ensina assim sem você falar qual teu conhecimento neim nada, você tentou fazer até onde? não fez nada? Da uma luz pra gente poder te ajudar mais facilmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for ensinar é simples!

Mas se precisar de exemplo da um grito que faço um exemplo pra você!

 

Você antes tem que verificar algumas coisas, por exemplo, se o usuário vai ter mais que uma area, que ele se loge como diretoria ele tem acesso a tudo por exemplo. Se for assim você tem que fazer alguns relacionamentos no seu banco, mais tudo simples!

você vai ter a tabela de usuarios, a tabela de area e a tabela relacionando os usuarios com as areas!

 

Fica meio complicado a gnete te ensina assim sem você falar qual teu conhecimento neim nada, você tentou fazer até onde? não fez nada?

 

Da uma luz pra gente poder te ajudar mais facilmente.

Meu amigo, e não fiz nada pois já tentei fazer vários lento tutoriais e não consigo mesmo.

Mas a idéia é essa: [B]o usuário vai ter mais que uma area, que ele se loge como diretoria ele tem acesso a tudo[/b]

 

 

Fico aguardando ancioso pela ajuda de você...

Muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então vamos lá:

 

Tudo que vou fazer aqui vai ser usando php+mysql!

Aqui vou fazer apenas uma demonstração, mais funciona, soh que com poucos dados, mas é pra você aprender a fazer, não pegar pronto e alterar! =)

 

Vamos criar um banco de dados pra esse esquema, para isso use um cliente de mysql qualquer, eu gosto de usar mysql-front ou phpmyadmin!

 

Criar banco de dados:

CREATE DATABASE acesso;
Criar uma tabela de login com 3 campos, ID, LOGIN e SENHA, id como auto incremento e chave primaria, apenas para facilitar na manipulação de dados futuramente:

 

CREATE TABLE login (id INT NOT NULL AUTO_INCREMENT ,login VARCHAR( 40 ) NOT NULL ,senha VARCHAR( 40 ) NOT NULL ,PRIMARY KEY ( id ));
Criar uma tabela de Areas com 2 campos, ID e AREA, id mesmo esquema da de antes, soh pra ajudar depois! (utilizo campo ID em todas as minhas tabelas, facilita e MUITO)

 

CREATE TABLE area (id INT NOT NULL AUTO_INCREMENT ,area VARCHAR( 40 ) NOT NULL ,PRIMARY KEY ( id ));
Agora uma tabela pra relacionar essas duas!! Apenas puxando o código de cada tabela!

 

CREATE TABLE rel_area_login (id INT NOT NULL AUTO_INCREMENT ,cod_login INT NOT NULL ,cod_area INT NOT NULL ,PRIMARY KEY ( id ));
Não vou fazer relacionamento nessas tabelas porque não sei se você usa tabelas tipo INNODB, mas se for o caso eh soh dar uns alter table depois! =)

 

Vamos inserir umas 3 areas e 2 usuarios pra teste! =)

 

INSERT INTO login ( id , login , senha ) VALUES ('', 'fitinge', MD5( 'teste' ));INSERT INTO login ( id , login , senha ) VALUES ('', 'teste', MD5( 'teste' ));
adicionei 2 usuarios, fitinge e teste, os 2 com a senha teste criptografado em MD5!

 

Agora vamos adicionar algumas areas!

 

INSERT INTO area ( id , area ) VALUES ('', 'rh');INSERT INTO area ( id , area ) VALUES ('', 'diretoria');INSERT INTO area ( id , area ) VALUES ('', 'marketing');INSERT INTO area ( id , area ) VALUES ('', 'cadastro');
Bom, feito isso, você vai perceber que cada login e cada area tem um código, o ID que é auto incremento!

No nosso exemplo ficou:

 

LOGIN:

1 = fitinge

2 = teste

 

AREA:

1 = rh

2 = diretoria

3 = marketing

4 = cadastro

 

Agora que vem o esquema do relacionamento, no exemplo não vou fazer uma pagina apenas para setar as permissões de cada usuario, isso você desenvolve depois, vamos por direto no banco!

 

Vou adicionar permissão as 4 areas para o usuario fitinge:

 

INSERT INTO rel_area_login ( id , cod_login , cod_area ) VALUES ('', '1', '1');INSERT INTO rel_area_login ( id , cod_login , cod_area ) VALUES ('', '1', '2');INSERT INTO rel_area_login ( id , cod_login , cod_area ) VALUES ('', '1', '3');INSERT INTO rel_area_login ( id , cod_login , cod_area ) VALUES ('', '1', '4');
E apenas marketing para o usuario teste:

 

INSERT INTO rel_area_login ( id , cod_login , cod_area ) VALUES ('', '2', '3');
Pronto, agora temos nosso banco de dados com permissões prontinho! Agora vamos para o mais legal! =)

 

Primeiro, arquivo de conexão com o mysql, eu sempre chamo de config.php!

 

config.php

PHP [/tr][tr]<?php

#faz conexão com o banco

mysql_connect("localhost","root","root");

#seleciona a DB

mysql_select_db("acesso");

?>

[/tr]

 

Agora o arquivo index.php

PHP [/tr][tr]<?php

#inclui o arquivo de conexão com o mysql

include('config.php');

 

#verifica se o form foi enviado

if(isset($_GET['ok']))

{

#verifica se login e senha não estão vazios

if(isset($_POST['login']) && !empty($_POST['login']) && isset($_POST['senha']) && !empty($_POST['senha']))

{

#verifica login e senha com o banco!

$res = mysql_query("SELECT * FROM login WHERE login = '" . $_POST['login'] . "' AND senha = '" . md5($_POST['senha']) . "'");

if($row = mysql_fetch_assoc($res))

{

#se retornou algo desse select é porque login e senha deu certo, dando certo o login faz um menu apenas com as areas que o usuario tem permissão para acessar:

$res2 = mysql_query("SELECT * FROM login, area, rel_area_login WHERE login.id = rel_area_login.cod_login AND area.id = rel_area_login.cod_area AND login.login = '" . $_POST['login'] . "'");

while($row2 = mysql_fetch_assoc($res2))

{

echo "<a href='index.php?area=" . $row2['cod_area] . "'>" . $row2['area'] . "</a><br>";

}

}

else

{

#se naum retorno erro de login ou senha

echo "Login ou Senha Inválidos!<br><br>";

}

}

else

{

echo "Login ou Senha em branco!<br><br>";

}

}

 

?>

 

<form action="index.php?ok=1" method="post">

Login: <input name="login" type="text"><br>

Senha: <input name="senha" type="password"><br>

<input name="submit" value="Logar" type="submit">

</form>

[/tr]

 

Da uma testada ae, só que assim, ele vai mostrar o menu das paginas que aquele usuario tem acesso! Se ele não tiver acesso não vai listar!

Vale lembrar ainda que você tem que fazer um esqueminha de segurança no começo de cada pagina, pro usuário não chegar e simplismente digitar o endereço na pagina e poder acessar! Para isso é bom utilizar session, se não sabe como usar session, eu já postei um exemplo, o link é esse: http://www.imasters.com.br/forum/index.php?showtopic=117352

 

Se encontrar problemas, por favor, posta ae pra gente ver oque tá acontecendo!

 

Espero que isso ajude! []'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então vamos lá:

 

Tudo que vou fazer aqui vai ser usando php+mysql!

Aqui vou fazer apenas uma demonstração, mais funciona, soh que com poucos dados, mas é pra você aprender a fazer, não pegar pronto e alterar! =)

 

Vamos criar um banco de dados pra esse esquema, para isso use um cliente de mysql qualquer, eu gosto de usar mysql-front ou phpmyadmin!

 

Criar banco de dados:

CREATE DATABASE acesso;
Criar uma tabela de login com 3 campos, ID, LOGIN e SENHA, id como auto incremento e chave primaria, apenas para facilitar na manipulação de dados futuramente:

 

CREATE TABLE login (id INT NOT NULL AUTO_INCREMENT ,login VARCHAR( 40 ) NOT NULL ,senha VARCHAR( 40 ) NOT NULL ,PRIMARY KEY ( id ));
Criar uma tabela de Areas com 2 campos, ID e AREA, id mesmo esquema da de antes, soh pra ajudar depois! (utilizo campo ID em todas as minhas tabelas, facilita e MUITO)

 

CREATE TABLE area (id INT NOT NULL AUTO_INCREMENT ,area VARCHAR( 40 ) NOT NULL ,PRIMARY KEY ( id ));
Agora uma tabela pra relacionar essas duas!! Apenas puxando o código de cada tabela!

 

CREATE TABLE rel_area_login (id INT NOT NULL AUTO_INCREMENT ,cod_login INT NOT NULL ,cod_area INT NOT NULL ,PRIMARY KEY ( id ));
Não vou fazer relacionamento nessas tabelas porque não sei se você usa tabelas tipo INNODB, mas se for o caso eh soh dar uns alter table depois! =)

 

Vamos inserir umas 3 areas e 2 usuarios pra teste! =)

 

INSERT INTO login ( id , login , senha ) VALUES ('', 'fitinge', MD5( 'teste' ));INSERT INTO login ( id , login , senha ) VALUES ('', 'teste', MD5( 'teste' ));
adicionei 2 usuarios, fitinge e teste, os 2 com a senha teste criptografado em MD5!

 

Agora vamos adicionar algumas areas!

 

INSERT INTO area ( id , area ) VALUES ('', 'rh');INSERT INTO area ( id , area ) VALUES ('', 'diretoria');INSERT INTO area ( id , area ) VALUES ('', 'marketing');INSERT INTO area ( id , area ) VALUES ('', 'cadastro');
Bom, feito isso, você vai perceber que cada login e cada area tem um código, o ID que é auto incremento!

No nosso exemplo ficou:

 

LOGIN:

1 = fitinge

2 = teste

 

AREA:

1 = rh

2 = diretoria

3 = marketing

4 = cadastro

 

Agora que vem o esquema do relacionamento, no exemplo não vou fazer uma pagina apenas para setar as permissões de cada usuario, isso você desenvolve depois, vamos por direto no banco!

 

Vou adicionar permissão as 4 areas para o usuario fitinge:

 

INSERT INTO rel_area_login ( id , cod_login , cod_area ) VALUES ('', '1', '1');INSERT INTO rel_area_login ( id , cod_login , cod_area ) VALUES ('', '1', '2');INSERT INTO rel_area_login ( id , cod_login , cod_area ) VALUES ('', '1', '3');INSERT INTO rel_area_login ( id , cod_login , cod_area ) VALUES ('', '1', '4');
E apenas marketing para o usuario teste:

 

INSERT INTO rel_area_login ( id , cod_login , cod_area ) VALUES ('', '2', '3');
Pronto, agora temos nosso banco de dados com permissões prontinho! Agora vamos para o mais legal! =)

 

Primeiro, arquivo de conexão com o mysql, eu sempre chamo de config.php!

 

config.php

PHP [/tr][tr]<?php

#faz conexão com o banco

mysql_connect("localhost","root","root");

#seleciona a DB

mysql_select_db("acesso");

?>

[/tr]

 

Agora o arquivo index.php

PHP [/tr][tr]<?php

#inclui o arquivo de conexão com o mysql

include('config.php');

 

#verifica se o form foi enviado

if(isset($_GET['ok']))

{

#verifica se login e senha não estão vazios

if(isset($_POST['login']) && !empty($_POST['login']) && isset($_POST['senha']) && !empty($_POST['senha']))

{

#verifica login e senha com o banco!

$res = mysql_query("SELECT * FROM login WHERE login = '" . $_POST['login'] . "' AND senha = '" . md5($_POST['senha']) . "'");

if($row = mysql_fetch_assoc($res))

{

#se retornou algo desse select é porque login e senha deu certo, dando certo o login faz um menu apenas com as areas que o usuario tem permissão para acessar:

$res2 = mysql_query("SELECT * FROM login, area, rel_area_login WHERE login.id = rel_area_login.cod_login AND area.id = rel_area_login.cod_area AND login.login = '" . $_POST['login'] . "'");

while($row2 = mysql_fetch_assoc($res2))

{

echo "<a href='index.php?area=" . $row2['cod_area] . "'>" . $row2['area'] . "</a><br>";

}

}

else

{

#se naum retorno erro de login ou senha

echo "Login ou Senha Inválidos!<br><br>";

}

}

else

{

echo "Login ou Senha em branco!<br><br>";

}

}

 

?>

 

<form action="index.php?ok=1" method="post">

Login: <input name="login" type="text"><br>

Senha: <input name="senha" type="password"><br>

<input name="submit" value="Logar" type="submit">

</form>

[/tr]

 

Da uma testada ae, só que assim, ele vai mostrar o menu das paginas que aquele usuario tem acesso! Se ele não tiver acesso não vai listar!

Vale lembrar ainda que você tem que fazer um esqueminha de segurança no começo de cada pagina, pro usuário não chegar e simplismente digitar o endereço na pagina e poder acessar! Para isso é bom utilizar session, se não sabe como usar session, eu já postei um exemplo, o link é esse: http://www.imasters.com.br/forum/index.php?showtopic=117352

 

Se encontrar problemas, por favor, posta ae pra gente ver oque tá acontecendo!

 

Espero que isso ajude! []'s

OK!

Até agora esta dando certo.

 

Mas é o seguinte:

Tenho uma pagina principal, que nela está exposta o meu menu, quando clico no menu ADMINISTRAÇÃO | RECURSOS HUMANOS, aí sim ela chama o index.php que você me ensinou. Mas é nesse momento que ela vai ter que validar se o usuário irá ou não passar por esta tela ( USUÁRIO e SENHA ), se o usuário e senha existir poderá ter acesso senão exibe uma mensage. No exemplo que você me ensinou ele cria o menu, mas isso acho que não vai ser preciso. Veja bem dentro do diretorio ADMINISTRAÇÃO tenho outros subdiretorios RH, SISTEMAS, etc. Dentro de cada eu criei um diretorio RESTRITO e criei o config.php e o index.php, se for validado os dados aí sim o usuário acessa as demais informações senão não.

 

Acho que é isso. ;)

Olha só você acessa o MSN ?

Qual é o seu usuário ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.