Ir ao conteúdo
  • Cadastre-se

Área restrita individual com Usuário e Senha


edmilson_cruz

Posts recomendados

Olá pessoal!

Já revirei a rede em busca dessa informação, porém não encontrei nada satisfatório. Também desconheço se aqui é a área correta para isso.

É o seguinte:

- Construirei uma página no Dreamweaver em que haverá um local destinado ao acesso restrito de usuários;

- O banco de dados, com os usuários e respectivas senhas, será criado no servidor de hospedagem;

- Todas as propriedades de conexão com o banco de dados, comportamentos do servidor etc., serão configurados.

A questão está em fazer com que cada usuário digite o seu "login" e "senha" e seja direcionado para um conteúdo exclusivo, que pode ser uma página, um documento ou qualquer outro objeto, mas que somente seja visualizado por esse usuário.

Nos estudos que vi, nas recomendações, tutoriais e vídeo-aulas o Dreamweaver direciona os usuários cadastrados para uma, apenas uma página específica, que é algo do tipo "pagina.php", "restrito.php" etc. Assim parece que todos os usuários veriam o mesmo conteúdo.

Portanto, onde implementar essa característica individual? No banco de dados? Como vincular com a página restrita? Ou, melhor, o que eu teria que inserir e onde inserir? Acredito que não seja algo complexo, mas assim como qualquer coisa na vida, quando não sabemos e a informação não é apresentada em nenhum lugar, temos que perguntar a quem pode saber.

Muito obrigado!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

você possivelmente está falando de perfil de usuário.

O perfil é uma característica de um ou mais usuários e serve, além de outras coisas, para esse controle de conteúdo. Outra possibilidade é você trabalhar individualmente com cada um, ou seja, um usuário tem acesso diferente de outro.

Exemplo:

- Eu crio a tabela de usuários com as colunas idUsuario, nome e senha.

- Crio a tabela de conteúdo, com os campos idUsuario, menu, docs.

- Quando o usuário loga, salvo uma variável de sessão com o idUsuario dele e direciono para uma pasta chamada "restrito", um arquivo de index

- Dentro desse arquivo verifico se ele está logado e seleciono no banco o menu e/ou documentos que ele vai ver de acordo com a variável de sessão

Claro, depende da característica de cada projeto o aperfeiçoamento disso, mas basicamente dá pra resolver dessa forma.

Pra quem tem poucos usuários e/ou não há uma rotatividade, o mais fácil é criar um diretório pra cada um e fazer autenticação via HTTP. Tipo assim: fulano, seu link de acesso é meusite.com/fulano. Logo de cara ele já vai se deparar com a janelinha pedindo user e senha. Quando entrar, você trabalha somente com os conteúdos de dentro dessa pasta.

Novamente, como falei, depende das características do projeto.

Link para o comentário
Compartilhar em outros sites

O ideal seria a solução mais dinâmica possível. Porém a questão está na implementação desse sistema, ou seja, onde relacionar a identidade do usuário com o seu respectivo conteúdo? Digo, no código propriamente dito.

Li uma resposta em outro local que poderia resolver. Na explicação era colocada somente uma página, por exemplo, "restrito.php", que seria acessada por todos os usuários, mas o conteúdo mostrado seria exclusivo para cada um.

A teoria parece ser descomplicada. Só resta saber onde adicionar os dados que serão responsáveis pelo serviço.

Agradeço a atenção.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

A relação é na coluna idUsuario que eu exemplifiquei. Uma tabela contem os dados do usuário e outra tabela os conteúdos que esse usuário tem acesso. A ligação entre eles é o idUsuario.

Agora, que tipo de conteúdo? Paginas? Novamente caímos nas características do projeto. Dependendo você cria um arquivo só, um restrito.php, e diversifica o conteúdo.

Link para o comentário
Compartilhar em outros sites

Compreendi a lógica da questão.

Como exemplo serão criadas duas tabelas. Nelas existirá um campo comum chamado "idusuario". Porém, a diferença entre as duas é que a primeira irá conter os campos de "nome" e "senha" para efetuar a conexão. Já na segunda estará os campos do conteúdo que somente o usuário com o mesmo "ID" visualizará. Corrija-me se eu estiver errado na conclusão.

Ok. Mas somente por definir o mesmo nome (idusuario) no campo primário, as tabelas assim se relacionam?

Caso seja necessário disponibilizar no "restrito.php" um conjunto de informações específicas ao usuário como o andamento do orçamento, da consultoria solicitada, do estudo pedido, da encomenda, transporte ou qualquer outro dado, tudo isso deve ser inserido onde? Nos campos de conteúdo da segunda tabela no banco de dados?

Valeu pela disponibilidade em elucidar essas dúvidas.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

você pode definir quantos registros quiser na segunda. Esse tipo de relação se caracteriza como 1:n que significa um registro (nome, senha) em uma tabela para N registros na outra (conteudos).

Partindo disso você já começa a trabalhar com chave estrangeira, ou seja, o idUsuario na tabela dos conteúdos é relacionado à coluna de mesmo nome na tabela de dados do usuário. você cria restrições e ações para o caso, por exemplo: ao excluir os dados do usuário o que fazer com os conteúdos dele? Excluir tb? Restringir a ação? Nada?

Começa a colocar um pouco disso no papel pra não ficar muito na teoria, que em programação é nada quando sozinha. Não sei seu nível de conhecimento ou que linguagem pretende utilizar.

De qualquer forma, já te parabenizo por criar a logica da "coisa" antes da "coisa". Parece uma ideia óbvia, mas grande parte dos "programadores" senta na frente da tela, começa a criar tudo junto com a lógica, fica um bolo só, e trabalha-se mais.

Link para o comentário
Compartilhar em outros sites

  • Moderador

exato, concordo plenamente com o amigo ali...

mas cuida para atender as regras de normalizaçao das tabelas relacionais... para nao haver redundancia outras anomalias nas suas tabelas...

para melhor conhecimento... sugiro que você de uma lida no livro de carlos alberto heuser da serie didática numero 4, projeto de banco de dados. se nao me engano capitulo 6 engenharia reversa e normalizaçao.

la explica diretinho as 5 regras convencionais... mas geralmente as 3 primeiras regras ja sao o suficiente para ter uma base de dados bem elaborada.

sobre o assunto discutido aqui... reforçando a ideia do amigo ali...

você pode criar uma tabela usuarios contendo o id do usuario. atendendo a primeira regra de normalizaçao você pode criar uam outra tabela para receber o id do usuario e armazenar outros atributos individuais.

por exemplo você cria um arquivo login.php contendo o form de login com metodo "post"... direcionando para um login2.php

nesse login2.php você irá resgatar as strings digitadas atraves de variaveis atribuidas por $_POST["nomeDoCampoDoForm"];

apos isso.. você irá fazer a conexa com seu banco, e criar uma consulta sql por exemplo

SELECT * FROM usuarios WHERE login ='$login' AND senha ='$senha'

e fazer uma verificaçao com um bloco de if para ver se existe aquele usuario e senha. lembrando que nisso tudo você terá que trabalhar com sessoes...

apos isso tudo.. você cria um direcionador para uma pagina por exemplo perfil_usuario.php

abaixou vou mostrar um exemplo de um login.php e login2.php que criei para meu site.

login.php:


<form name="loginRestrito" method="post" action="login2.php">
<label for="login">Login</label>
<input type ="text" name="login" id="login" size="20" /><br/>

<label for="senha">Senha</label>
<input type ="password" name="senha" id="senha" /><br/>
<input type ="submit" value="Entrar" />
</form>

login2.php:


<?php
session_start();

$login = $_POST["login"];
$senha = $_POST["senha"];

if (empty($login) or empty($senha)) {
echo "<script>
alert('Preencha todos os campos');
history.go(-1);
</script>";
exit;
}


include("conecta.php");

$sql = "SELECT * FROM usuarios WHERE login ='$login' AND senha ='$senha' ";
$dados = mysql_query($sql, $conecta);
$num = mysql_num_rows($dados);

if ($num == 0){
echo "<script>
alert('Usuario ou senha Incorreta');
history.go(-1);
</script>";
exit;
} else {
$linha = mysql_fetch_array($dados);
$coduser = $linha["codigo"];

$_SESSION["codusuario"] = $coduser;
$_SESSION["login"] = $login;

//redirecionador para a pagina principal depois de logado
header ("Location: index.php");

}
// mysql_free_result($dados);
mysql_close($conecta);
?>

é naquele header ("Location: index.php"); que você irá colocar a pagina que deseja entrar , se o usuario e senha for validado.

e para apresentar informaçoes individuais depois... na pagina perfil_cliente.php por exemplo você pode fazer uma consulta sql buscando a partir do id do usuario.. podes utilizar o inner join para elaborar sua consulta mesclando dados de outras tabelas como por exemplo

select imoveis.nome, imoveis.endereco, loteamento.numeroLoteamento from imoveis

inner join loteamento on imoveis.idLoteamento = loteamento.idLoteamento

traduzindo.. selecionar nome do imovel, endereço do imovel , numero do loteamento do imovel da tabela imoveis em tabela loteamento onde o idLoteamento contido na tabela imoveis é igual ao idLoteamento da tabla loteamento. é +- isso..

http://www.ageent.ru/pt/sql-inner-join.html para ver melhor exemplo..

indo a partir disso... podes apresentar qualquer iformaçao na sua pagina.php exclusiva para cada usuario... pois todos os dados dele irao estar sendo buscados pelo id dele...

espero ter ajudado em algo

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!