Jump to content


Photo

Problemas Com Redirecionamento.


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

#1 CarlosMatanza

CarlosMatanza

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado
  • Localidade:Minas Gerais

Posted 11/07/2008, 13:09

Olá pessoal...

Estou com um probleminha aqui em um redirecionamento.
É o seguinte: Tenho dois tipos de usuários: Administrador e Visitante.
Assim que é efetuado o login o administrador é redirecionado para um setor específico para efetuar as atividades inerentes ao seu tipo de permissão.
o visitante é redirecionado para uma página onde ele só pode visualizar os dados cadastrados pelo administrador.
Esses dois setores (admin e visitante) estão fora da página inicial e necessita de login (claro!). Porém não consegui realizar esse redirecionamento.
Eu fiz um redirecionamento só que não achei adequado para a minha aplicação. Para tanto gostaria da opinião de vocês de como isso pode ser feito com segurança.
Inicialmente eu tenho esse código, que faz o redirecionamento após o login, mas não verifica o tipo de permissão:
<?
	$sql = "select login_user, senha_user, permissao_user from usuarios where (login_user = '$user') and (senha_user = '$senha')";
	$result = mysql_query($sql);
	if ( mysql_num_rows($result) == 1 ) {
		print ("<script> alert ('USUÁRIO AUTENTICADO'); </script>");
		$_SESSION['valid'] = true;
		$pagina = 'redirAdmin.php';
	}
			
	else {
		print ("<script> alert ('USUÁRIO NÃO AUTENTICADO'); </script>");
		$_SESSION['valid'] = false;
		$pagina = 'login.php';
	}
?>

Qual a solução mais adequada para fazer esse redirecionamento complementando o trecho de código acima?
Uma coisa importante: o campo 'permissao_user' está relacionado a uma outra tabela do meu bd que possui o id da pemissão, a descrição (Administrador e Visitante) e o patch (url) para qual deve ser redirecionado. Nesse caso ele verifica apenas se é Administrador ou Visitante. Dependendo do resultado o redirecionamento é realizado para o setor específico.

Desde já agradeço!!!

Edição feita por: CarlosMatanza, 11/07/2008, 13:10.


#2 .:: Julio´Psy ::.

.:: Julio´Psy ::.

    Turista

  • Usuários
  • 48 posts
  • Sexo:Masculino

Posted 11/07/2008, 15:42

<?

	$_SESSION['valid'] = false; // Por questão de segurança já seta ela antes como false.

	$sql = "select login_user, senha_user, permissao_user from usuarios where (login_user = '$user') and (senha_user = '$senha')";
	$result = mysql_query($sql);
   
	$dados = mysql_fetch_array($result); // Aqui é criado um array que tem os dados do usuario da tabela.

	if ( mysql_num_rows($result) == 1 ) {
		print ("<script> alert ('USUÁRIO AUTENTICADO'); </script>");
		$_SESSION['valid'] = true;
 
		$pagina = 'redirAdmin.php';
		$pagina_admin = "Admin.php"; //Suposta pagina do administrador
		
		if($dados['permissao_user'] == "admin"){  // Aqui verifica se o campo do permissao_user é equivalente a Administrador.

   header('Location: '.$pagina_admin); }
  else {
  header('Location: '.$pagina);  }


	}
			
	else {
		print ("<script> alert ('USUÁRIO NÃO AUTENTICADO'); </script>");
		$_SESSION['valid'] = false;
		$pagina = 'login.php';
	}
?>



;)

#3 CarlosMatanza

CarlosMatanza

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado
  • Localidade:Minas Gerais

Posted 22/07/2008, 15:56

Então galera... desculpa pela demora para responder...
Tive alguns probleminhas e fiquei off por uns dias. <_<

Bem... consegui resolver o problema. Mais ou menos da mesma forma que o Júlio Psy sugeriu.
O problema nem era fazer o redirecionamento, que é bem simples. O problema era redirecionar para um setor específico do administrador verificando a página de início e sem deixar que outra pessoa que tivesse autenticado caísse no setor administrativo.

Além disso, após o redirecionamento toda a minha página perdia a estrutura de arquivos (arquivos .css e .js) já que a minha página de referência não seria mais index.php e sim index_admin.php. Logo, ficava totalmente desconfigurada.

A solução que adotei foi a seguinte:

valida.php
// Seleciona os dados necessários para a realização do Login e a verificação da Permissão.
$sql = "select login, senha, permissao from usuarios where (login = '$login') and (senha = '$senha')";
$result = mysql_query($sql);
$dados = mysql_fetch_array($result);
if ( mysql_num_rows($result) == 1 ) {
	print (" <script> alert ('USUARIO AUTENTICADO'); </script> ");
	$_SESSION['valid'] = true;
	$tpermissao = $dados['permissao'];
	if ( $tpermissao == "1" ) {
			$pagina = '../admin/index_admin.php'; //-> Tive que colocar essa variável para não perder a minha estrutura de arquivos!!!
		print ("  <script> location.href = '../admin/index_admin.php';</script> ");
	}
	if ( $tpermissao == "2" ) {
		$pagina = '../user/index_user.php'; //->
	}
}

Até aí tudo bem! Segui mais ou menos o padrão que o Júlio Psy sugeriu, mas quando eu logava como usuário e mudava, no browser, para a URL de admin eu entrava no sistema sem problemas. Para evitar isso fiz essa verificação no meu controlador:

control.php
include('conexao.php');
// Pega o número da página e inicia sessão. Caso a sessão não tenha sido iniciada realiza redirecionamento.
$pag = $_GET['pag'];
session_start ();
// Verifica o número da página. Caso a página seja '1' ou '_'(nada), e a sessão seja válida o conteúdo principal do Setor
// Administrativo é mostrado.
if ( ( $pag == 1 ) || ( $pag == '' ) && ( $_SESSION['valid'] == true ) ) { 
	$pagina = 'conteudo.php'; // Essa página é onde está o meu conteúdo principal que será exibido na div logo apos o login.;)
}
// Caso a sessão seja fala é realizado um redirecionamento para a página de login.
if ( $_SESSION['valid'] == false ){
	print (" <script> location.href = '../site/index.php';</script>");
}

Portanto!!! Meu problema foi resolvido!!!
Valeu Júlio Psy.
Espero que a minha solução também possa ser útil para alguém.
:rolleyes:

[]'s

Edição feita por: CarlosMatanza, 22/07/2008, 16:07.





1 user(s) are reading this topic

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

IPB Skin By Virteq