Ir para conteúdo

POWERED BY:

Arquivado

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

João Airton

Sistema de login e senha usuarios por pasta.

Recommended Posts

Pessoal boa noite, estou criando um sistema de login e senha onde cada usuário que acesse com seu usuario e senha, direcione para uma pasta X na hospedagem.
Exemplo. Usuário Pedro loga com seu usuario e senha, direciona para a pasta http://www.xxxx.com.br/areadocliente/pedro, consegui efetuar o direcionamento o detalhe é que quando troco o nome 'pedro' por 'joao' na url acessa normalmente os dados da pasta joao.

Gostaria de saber se tem como bloquermos esse acesso, ou ocultar a url até http://www.xxxx.com.br/areadocliente/ que nao apareca o nome das pastas, ou então criptografar de alguma maneira a pasta na url.

 

Segue os codigos usados:

 

Login.php

<?php
//Mude aqui para onde o usuário vai ser redirecionado caso o Login for bem sucedido
$pagina_restrita = "areacliente/".$_POST['login']."/";

if(isset($_GET['msg']) && $_GET['msg'] != "") {
	require("./areacliente/SQL.php");
	$mensagem = anti_injection($_GET['msg']);
} else {
	$mensagem = base64_encode("Acesso para Área Restrita");
}

if($_SERVER['REQUEST_METHOD'] == "POST"){

		if(isset($_POST['login']) && isset($_POST['senha'])){
		require("./areacliente/SQL.php");				
		$login = (anti_injection($_POST['login']));
				$senha = md5(anti_injection($_POST['senha']));
				$query = mysql_query("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha'") or die(mysql_error());
				$rTestar = mysql_num_rows($query);
		$row = mysql_fetch_assoc($query);
			   
				if($rTestar > '0'){
					  //session_start();
						session_register('email');
						session_register('login');
						session_register('senha');
						$_SESSION['email'] = $row['email'];
						$_SESSION['login'] = $row['login'];
						$_SESSION['senha'] = $row['senha'];
						echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $pagina_restrita . "\">";
			exit;
				} else {
			   
						$mensagem = base64_encode("<font color=\"red\"><b>Login ou senha Invalida</b></font>");
			   
				}			   
		}
}
?>

restringir.php

<?php
//Coloque aqui uma mensagem caso a pessoa tente entrar em uma página protegida sem autenticação
$mensagem = base64_encode("Faça o Login primeiro"); 


session_start();
if(isset($_SESSION['login']) && isset($_SESSION['senha'])) {
		$login = $_SESSION['login'];
		$senha = $_SESSION['senha'];
		require("SQL.php");
		$query = mysql_query("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha'") or die(mysql_error());
		$rTestar = mysql_num_rows($query);
}

if(isset($rTestar) && $rTestar > '0'){
		$row = mysql_fetch_assoc($query);
} else {
	echo "<meta http-equiv=\"refresh\" content=\"0; URL=../../index.php\">";
	exit;
}
?>

 


Aguardo ajuda de vocês ai pessoal.
Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega sugiro que faça o seguinte, adicione no banco de dados a pasta que o usuário tenha permissão, desta forma se ele mudar o nome da URL não ira passar na validação, exemplo:

 

<?php 

$nomePasta = $_GET['p'];
$idUser = $ObjLogin->idUser;

$sql = "Select nomePasta From user Where nomePasta = '$nomePasta' && idUser = $idUser;

 

Desta forma se encontrar a pasta ele tem acesso, caso contrario redireciona para tela de erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, é como o Wesley David falou, precisa guardar o nome que foi logando e validar sempre se a pasta que está tentando acessar tem mesmo nome do login.

 

PS: o campo com o nome/login do indivíduo é único, não podendo haver nomes iguais, afinal daria problema se houvesse 2 pedro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wesley, valeu pela dica ai.

Só uma duvida, o código citado eu incluo no restringir.php?

Valeu.

 

Colega sugiro que faça o seguinte, adicione no banco de dados a pasta que o usuário tenha permissão, desta forma se ele mudar o nome da URL não ira passar na validação, exemplo:

 

<?php 

$nomePasta = $_GET['p'];
$idUser = $ObjLogin->idUser;

$sql = "Select nomePasta From user Where nomePasta = '$nomePasta' && idUser = $idUser;

 

Desta forma se encontrar a pasta ele tem acesso, caso contrario redireciona para tela de erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só uma duvida, o código citado eu incluo no restringir.php?

 

Pode colocar neste arquivo mesmo, mas sugiro que você o altere, pois você também armazena a senha em uma session isso pode trazer insegurança para o sistema, se o usuário já esta logado você não precisa ficar validando sempre usuário e senha, faz o seguinte,

 

Usuário logado =>>

SIM >> Verifica se o mesmo esta acessando sua pasta,

Não >> Redireciona para a tela de login

 

 

 

 

Também faça igual o Diegus Miestro citou, utilize o username único desta forma você impede problemas futuros.

 

Uma sugestão também para escolha do nome da pasta é usar o ID auto incremento do usuário, desta forma se o usuário desejar mudar de username não precisará renomear a pasta, pois para o usuário você pode usar qualquer nome para a pasta dele mas na verdade irá sempre apontar para o ID dele, exemplo:

 

Nome interno Nome a ser apresentado

1 >> renato

2 >> joão

3 >> maria

 

>> Se algum usuário mudar o username

 

 

Nome interno Nome a ser apresentado

1 >> rodrigo

2 >> joão

3 >> vanessa

 

 

Desta forma não interessa o nome do usuário ele sempre terá acesso a sua pasta sem problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode colocar neste arquivo mesmo, mas sugiro que você o altere, pois você também armazena a senha em uma session isso pode trazer insegurança para o sistema, se o usuário já esta logado você não precisa ficar validando sempre usuário e senha, faz o seguinte,

 

Usuário logado =>>

SIM >> Verifica se o mesmo esta acessando sua pasta,

Não >> Redireciona para a tela de login

 

 

 

 

Também faça igual o Diegus Miestro citou, utilize o username único desta forma você impede problemas futuros.

 

Uma sugestão também para escolha do nome da pasta é usar o ID auto incremento do usuário, desta forma se o usuário desejar mudar de username não precisará renomear a pasta, pois para o usuário você pode usar qualquer nome para a pasta dele mas na verdade irá sempre apontar para o ID dele, exemplo:

 

Nome interno Nome a ser apresentado

1 >> renato

2 >> joão

3 >> maria

 

>> Se algum usuário mudar o username

 

 

Nome interno Nome a ser apresentado

1 >> rodrigo

2 >> joão

3 >> vanessa

 

 

Desta forma não interessa o nome do usuário ele sempre terá acesso a sua pasta sem problema.

 

Wesley vamos lá, tentei fazer a configuração, mas não consegui acho que não entendi, ja fiz a configuração no banco onde cada usuario vai logar por CNPJ ou CPF, sendo assim não vamos ter problemas de usuarios com o mesmo login, as pastas vão conter o nome do login do usuario CNPJ ou CPF.

Só preciso entender com você como fazer essa validação, não sei se você conseguiria montar o código ou dar uma previa de como montar pra mim.

Aproveitando já agradeço pela atenção e a compreenção pois não tenho muito conhecimento.

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega criar o código não vai dar não, mas vou mostrar a logica de como fazer.

 

Novo usuário >>

Formulário de cadastro de usuário

Validar dados usuário (cpf, nome, username, etc)

Registrar usuário no banco de dados

Pegar id do usuário registrado (lastInsertId)

Criar pasta com ID do usuário (mkdir)

 

 

Login de usuário

Formulário de login

Validar dados de acesso do usuário

Usuário autenticado >>

Sim >> Abrir pasta do usuário

Não >> Redireciona para a tela de login

 

 

Sempre que atualizar a página irá verificar se usuário autenticado e buscar a pasta dele, você pode guardar o ID da pasta na session para não ficar sempre acessando o banco de dados.

 

if( ! (isset($_SESSION['username']) && isset($_SESSION['id'])))
   /* Redireciona tela de login */

Verifica se existe a session, se não existir usuário é redirecionado para a tela de login

Se session ok abri pasta do usuário

 

Qualquer dúvida vai postando ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega criar o código não vai dar não, mas vou mostrar a logica de como fazer.

 

Novo usuário >>

Formulário de cadastro de usuário

Validar dados usuário (cpf, nome, username, etc)

Registrar usuário no banco de dados

Pegar id do usuário registrado (lastInsertId)

Criar pasta com ID do usuário (mkdir)

 

 

Login de usuário

Formulário de login

Validar dados de acesso do usuário

Usuário autenticado >>

Sim >> Abrir pasta do usuário

Não >> Redireciona para a tela de login

 

 

Sempre que atualizar a página irá verificar se usuário autenticado e buscar a pasta dele, você pode guardar o ID da pasta na session para não ficar sempre acessando o banco de dados.

 

if( ! (isset($_SESSION['username']) && isset($_SESSION['id'])))
   /* Redireciona tela de login */

Verifica se existe a session, se não existir usuário é redirecionado para a tela de login

Se session ok abri pasta do usuário

 

Qualquer dúvida vai postando ;)

 

Beleza Wesley, vou apanhando aqui mas vou ver se consigo resolver, já valeu a dica.

Se souber de alguns script ai onde possa pegar esses códigos ou ter uma base de como fazer já ajuda.

Abaixo estou tentando usar o código que você citou anteriormente mas não esta dando certo.

<?
//Coloque aqui uma mensagem caso a pessoa tente entrar em uma página protegida sem autenticação
require("SQL.php");
$nomePasta = $_GET['login'];
$idUser = $ObjLogin->idUser;

$sql = ("Select login From usuarios Where login = '$nomePasta' && idUser = $idUser") or die(mysql_error());

$mensagem = base64_encode("Faça o Login primeiro"); 


session_start();
if(isset($_SESSION['login']) && isset($_SESSION['senha'])) {
		$login = $_SESSION['login'];
		$senha = $_SESSION['senha'];
		require("SQL.php");
		$query = mysql_query("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha'") or die(mysql_error());
		$rTestar = mysql_num_rows($query);
}

if(isset($rTestar) && $rTestar > '0'){
		$row = mysql_fetch_assoc($query);
} else {
	echo "<meta http-equiv=\"refresh\" content=\"0; URL=../../index.php\">";
	exit;
}
?>

Valeu.

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.