Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite pessoal,
Estou com um problema que não consigo resolver.
A cena é esta.
Tenho um login com sessões e por nível( 1 = usuário normal e 2= administradores); Consigo identificar nome de usuário e nível através destas sessões , session['usuario'] e session['usuarioNivel'], ficando assim:
Olá **administrador** Carlos, ( Se for **nível 2** );
Olá **usuário** Carlos, ( Se for **nível 1** );
Em uma página tenho os nomes de todos os usuários e administradores cadastrados no site e para verificar seus dados, eu envio via Get o id desta forma: <a href="usuarios.php?id=<?php echo $id; ?>">Carlos</a>;
A usuarios.php funciona perfeitamente e mostra os dados referentes ao cadastro deste usuário, mas como o usuário também pode fazer postagens, inclusive de imagens, tenho uma tabela no banco chamada imagens e nela estão cadastrados o id da imagem, nome da imagem e o usuário que postou. Para ver as imagens postadas por um usuário eu tenho um link na página usuarios.php que envia por get o nome do usuario desta forma: imagens.php?usuario=<?php echo $usuario; ?>... ;
Nesta página aí, imagens.php é que acontece aquela mudança na sessão usuário mudando o nome, digamos que o dono da página fosse RENAN.
Antes: Olá administrador Carlos,
Depois: Olá administrador Renan,
Notem que se está chamando de administrador é porque a sessionNivel continua 2 fazendo Renan ter privilégios de administrador sem ser.
Será que está acontecendo esta mudança de usuário porque estou enviando por get a variável $usuario? Mas porque acontece isto? Desta forma estou mudando alguma coisa na sessão? E se eu ao invés de registrar o usuário na tabela imagens, registrasse o id do usuário será que isso também aconteceria? Tem um porém também, como gravo os cadastros separados em tabelas, como admin e cadastro_usuario, cada tabela tem seu próprio id, existe id de administrador igual ao de usuário e também existe a $_session['usuarioId'].
Só queria saber o porque da sessão mudar o nome, não consigo resolver porque não faço a mínima ideia de o porque está acontecendo isso.
Já aconteceu isso com alguém?
Desde já agradeço a ajuda.
antes de tudo deixe eu fala uma coisa seria melhor você coloca os dados da session de login e senha e fazer o select procurando assim o nivel.
outra coisa poste seu codigo de autenticação e sua pagina de restricao paga a gente da uma analizada.
Qual o valor da variavel $usuario ? Coloca o código da página imagens.php
Qual o valor da variavel $usuario ?o valor é o nome de usuário que é usado para logar-se.
Login: carlos.
<?php//arquivo usado para a conexão com o banco de dadosinclude ("../../login/conexao/conexao.php"); /*arquivo que regula o acesso para a página atual através do nível, se for acessada diretamente o script redireciona para a página restrito que dá aviso e redireciona para a index.php*/ include ("../../login/usuario_logado_normal.php"); //verifica se o usuário existe.if(!isset($_GET['usuario']) || empty($_GET['usuario'])){ echo "<meta http-equiv='refresh' content='3;URL=../../index.php'>"; exit();} $query_selecionaUsuario = "SELECT * FROM imagens WHERE usuario='" . $_GET['usuario']. "'";$selecionaUsuario = mysql_query($query_selecionaUsuario) or die(mysql_error());$totalRows_selecionaUsuario = mysql_num_rows($selecionaUsuario); while($exibir = mysql_fetch_array($selecionaUsuario)){ $id = $exibir['id'];$usuario = $exibir['usuario'];$data = $exibir['data'];$imagem = $exibir['imagem'];$titulo = $exibir['titulo'];$categoria = $exibir['categoria'];$atualizacao= $exibir['atualizacao'];$nivel = $exibir['nivel'];?>
Abaixo disto vem a página propriamente dita com os códigos para exibição das imagens e também com botões para navegação e etc...
Este código que identifica se é usuário ou administrador que fez o login
<div style="margin:10px;">Logado como: <?phpif($_SESSION['usuarioNivel'] == 2){echo " <vermelho>Administrador</vermelho> ".$_SESSION['usuario'].".";}elseif($_SESSION['usuarioNivel'] == 1){echo " <vermelho>usuário</vermelho> ".$_SESSION['usuario'].".";}?> <a href="../../login/logout.php" title="Fazer LogOut">[ SAIR ]</a> </div>
>
antes de tudo deixe eu fala uma coisa seria melhor você coloca os dados da session de login e senha e fazer o select procurando assim o nivel.
outra coisa poste seu codigo de autenticação e sua pagina de restricao paga a gente da uma analizada.
antes de tudo deixe eu fala uma coisa seria melhor você coloca os dados da session de login e senha e fazer o select procurando assim o nivel.Como assim? Não entendi.
validação.php
<?php // Verifica se houve submit no formulário e se o usuário ou a senha (são) vazio(s) if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) { //header("Location: ../index.php"); exit;echo "<meta http-equiv='refresh' content='1;URL=../index.php'>";exit; } include "conexao/conexao.php";// faz a conexão com o banco de dados $usuario = mysql_real_escape_string($_POST['usuario']); $senha = mysql_real_escape_string($_POST['senha']); // Validação do usuário/senha digitados $sql = "SELECT `id`, `nome`, `usuario`, `nivel`, `email` FROM `admin` WHERE (`usuario` = '".$usuario ."') AND (`senha` = '". md5($senha) ."') AND (`ativo` = 1) LIMIT 1"; $query = mysql_query($sql); if (mysql_num_rows($query) != 1) { // Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado echo "<div id='texto' style='width:500px; margin:0 auto 0 auto;'><h1>Login inválido!</h1></div>"; //redireciona o usuário para a página indexecho "<meta http-equiv='refresh' content='1;URL=../index.php'>";//Fecha a conexão.exit; } else { // Salva os dados encontados na varivel $resultado $resultado = mysql_fetch_assoc($query); // Se a sessão não existir, inicia uma if (!isset($_SESSION)) session_start(); // Salva os dados encontrados na sesso $_SESSION['usuarioId'] = $resultado['id']; $_SESSION['usuarioNome'] = $resultado['nome']; $_SESSION['usuario'] = $resultado['usuario'];$_SESSION['usuarioNivel'] = $resultado['nivel'];$_SESSION['usuarioEmail'] = $resultado['email']; // Redireciona o visitanteecho "<meta http-equiv='refresh' content='2;URL=restrito.php'>";exit; }?>
Tem este código aqui também que é o da página usuario_logado_normal.php, ele regula o acesso para as páginas internas do site, este aqui libera acesso tanto para usuário como para administrador(níveis 1 e 2), tem a que libera o acesso restrito a administrador( nível 1 ).
<?php // A sessão precisa ser iniciada em cada página diferente if (!isset($_SESSION)) session_start(); $nivel_necessario = ("('1') && ('2')");// aqui é feita a leitura de níveis // Verifica se no há a variável da sessão que identifica o usuário if (!isset($_SESSION['usuarioId']) OR ($_SESSION['usuarioNivel'] <$nivel_necessario)) { // Destrói a sessão por segurança session_destroy(); // Redireciona o visitante de volta pro loginecho "<meta http-equiv='refresh' content='2;URL=../admin/login/cadastrar-se.php'>";exit; } ?>
Caramba ainda não achei o erro.... Alguém sabe aí?
bom amigo tente dessa forma.
validacao.php
<?php
session_start();
include "conexao/conexao.php";
if(isset($_POST['logar'])){
$login = mysql_real_escape_string($_POST['login']);
$senha = mysql_real_escape_string($_POST['senha']);
if(empty($login)){
echo"Campo login Vazio";
}
elseif(empty($senha)){
echo"Campo login Vazio";
}else{
$query=("SELECT COUNT(*) FROM usuarios where usuario = '".$login ."' AND senha = '".$senha ."' OR ativo=1 ");
$contador=mysql_num_rows($query);
if ($contador==0){
echo "<div id='texto' style='width:500px; margin:0 auto 0 auto;'><h1>Essa conta não Existe</h1></div>";
}else{
$consulta=("SELECT * FROM usuarios where usuario = '".$login ."' AND senha = '".$senha ."' OR ativo=1 ");
$dados=mysql_fetch_assoc($consulta);
$_SESSION['usuario'] = $login;
$_SESSION['senha'] = $senha;
echo "<meta http-equiv='refresh' content='2; URL=central.php'>";
}
}
}
?>
restricao.php
<?php
session_start();
if (!isset($_SESSION['usuario']) OR ($_SESSION['senha'])) {
echo "<meta http-equiv='refresh' content='2; URL=../admin/login/cadastrar-se.php'>";
exit;
}
?>
central.php
<?php
include_once("restricao.php");
$consulta=("SELECT * FROM usuarios where usuario = '".$_SESSION['usuario'] ."' AND senha = '".$_SESSION['senha'] ."' OR ativo=1 ");
$dados=mysql_fetch_assoc($consulta);
?>
<div style="margin:10px;">
Logado como:
<?php
if($dados['nivel'] == 2){
echo " <vermelho>Administrador</vermelho> ".$_SESSION['usuario'].".";
}elseif($dados['nivel'] == 1){
echo " <vermelho>usuário</vermelho> ".$_SESSION['usuario'].".";
}
?> <a href="../../login/logout.php" title="Fazer LogOut">[ SAIR ]</a>
</div>
tente assim mano qualquer coisa me manda mp
Olá amigo.
Seria interessante a modelagem da tabela.
id
nome
login
senha
ativo
administrador
e fazer um select pelo login e senha e ativo depois só verificaria se o mesmo e administrador ou não.
$sql = "SELECT * FROM usuários WHERE login = :login AND senha = :senha AND ativo = :ativo ";
Recupera os dados caso tenha algum resultado, recuperando apenas o primeiro encontrado.
depois verificaria o campo administrador. Assim, evitaria o cadastro de usuário duplicado fazendo que com o login fosse único.
Porem o nome que seria a exibição poderia ter 2 joão, Carlos, pedro, etc.
Nome não seria único. o campo login seria único.
Qual o valor da variavel $usuario ? Coloca o código da página imagens.php