Ir para conteúdo
Fórum Script Brasil
  • 0

IF, ELSEIF, ELSE


PEIXOTO

Pergunta

Boa tarde pessoal,

primeiramente como todos podem ver sou novo aqui no fórum, estou fazendo um sistema de login e senha com multi-níveis/usuários porém meu script quando eu executo ele só cai na primeira instância o IF, ele não faz a verificação das outras opções, qualquer login seja do nivel 0,1 ou 2 levam a página admin.php

Se poderem me ajudar, desde já fico muito grato.

Att,

Peixoto

Página de verificação do tipo de usuário

<?
if ($Login_niv !==0) {
    echo"&lt;script>window.location='admin.php','_self'</script>";
} elseif ($Login_niv !==1) {
    echo"&lt;script>window.location='admin_operador.php','_self'</script>";
} elseif ($Login_niv !==2) {
    echo"&lt;script>window.location='todos_cadastrados.php','_self'</script>";
}
?>
Página do usuário recebendo valores da página anterior:
<?
session_start();

if ($Login_niv != '0')
{
echo "Essa pagina é restrita aos administradores do nosso site.";
die;
} 
?>

Editado por PEIXOTO
Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

ESerra,

fiz a troca porém agora ele não faz a verificação no primeiro registro o "0" do admin... eu logo com dois usuários diferentes níveis e eles vão para o "1" de admin_operador.php ele não testa se é nivel 0,1 ou 2... ele para e executa o nível 1

Link para o comentário
Compartilhar em outros sites

  • 0

ESerra,

obrigado pela ajuda que você esta me dando.. dei um echo no $Login_niv e ele me retornou isso:

Login incorreto!

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\novo\login_verifica.php:9) in C:\wamp\www\novo\login_verifica.php on line 25

Login aceito, aguarde você está sendo redirecionado..

<?
include ('conecta.php');
$senhaconf = ($senha);
$comando = "select * from usuarios where usuario = '$usuario'";
$res=mysql_query($comando,$con);
$quanto=mysql_num_rows($res);
if ($quanto==0)
{
echo "Login incorreto!";
$vis="none";
}
else
{
$linha= mysql_fetch_array($res);
$usuario=$linha['usuario'];
$senha=$linha['senha'];
$email=$linha['email'];
$nivel=$linha['nivel'];
$nome=$linha['nome'];
$cidade=$linha['cidade'];
$estado=$linha['estado'];
}
if ($senhaconf == $senha)
{
session_start();                            // LINHA 25
session_register("Login_usu");
session_register("Login_niv");
session_register("Login_ema");
session_register("Login_nom");
session_register("Login_est");
session_register("Login_cid");
$Login_usu = $usuario;
$Login_niv = $nivel;
$Login_ema = $email;
$Login_nom = $nome;
$Login_est = $estado;
$Login_cid = $cidade;
echo "Login aceito, aguarde você está sendo redirecionado..<br><br>";
// echo "<script>window.location='teste.php','_self'</script>";                     LINHA ORIGINAL 
echo "$Login_niv";                            // LINHA ALTERADA PARA O  ECHO
}
else
{
echo "<div>Senha Incorreta  -- <a href='java script: history.back()'>voltar</a>.</div>";
}
$res=mysql_close($con);
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Mixeu,

fiz o que você falou e não adiantou o script quando executa para verificação do nível 1 independentemente de do login que seja feito, o código abaixo alterado:

<?
session_start();
session_register("Login_usu");
session_register("Login_niv");
session_register("Login_ema");
session_register("Login_nom");
session_register("Login_est");
session_register("Login_cid");

include ('conecta.php');

$senhaconf = ($senha);
$comando = "select * from usuarios where usuario = '$usuario'";
$res=mysql_query($comando,$con);
$quanto=mysql_num_rows($res);
if ($quanto==0)
{
echo "Login incorreto!";
$vis="none";
}
else
{
$linha= mysql_fetch_array($res);
$usuario=$linha['usuario'];
$senha=$linha['senha'];
$email=$linha['email'];
$nivel=$linha['nivel'];
$nome=$linha['nome'];
$cidade=$linha['cidade'];
$estado=$linha['estado'];
}
if ($senhaconf == $senha)
{
$Login_usu = $usuario;
$Login_niv = $nivel;
$Login_ema = $email;
$Login_nom = $nome;
$Login_est = $estado;
$Login_cid = $cidade;
echo "Login aceito, aguarde você está sendo redirecionado..<br><br>";
echo "&lt;script>window.location='teste.php','_self'</script>";
}
else
{
echo "<div>Senha Incorreta  -- <a href='java script: history.back()'>voltar</a>.</div>";
}
$res=mysql_close($con);
?>

outro detalhe no arquivo de redirecionamento, quando eu coloco assim:

if ($Login_niv !==0) { // COM DOIS SINAIS DE ==

echo"&lt;script>window.location='admin.php','_self'</script>"; // todos dois níveis param aí, mais quando eu coloco assim:

} elseif ($Login_niv !=1) { // COM UM SINAL DE =

echo"&lt;script>window.location='admin_operador.php','_self'</script>"; // todos dois níveis param aí.

O script não verifica se se for nivel 0 é admin (vai para admin.php) se for 1 é operador (vai para operador.php) e se for 2 e usuário(vai para usuario.php)

Editado por PEIXOTO
Link para o comentário
Compartilhar em outros sites

  • 0

Mixeu,

também não funcionou... não sei o porque desse problema... ou os niveis executam apenas uma rotina e para ou outra, ele não esta varrendo e validando qual é o certo que ele tem que parar.

O script está assim: todos os nives vão para o "0" quando coloco ==, vão para "1" quando coloco = , não esta verificando se é um nível ou outro.

Ajudem-me a sair dessa...por favor...

Link para o comentário
Compartilhar em outros sites

  • 0

Faz isso com switch...

switch($Login_niv){
     case: 0
          ............
          break;
     case: 1
          ............
          break;
     case: 2
          ............
          break;
}

Link para o comentário
Compartilhar em outros sites

  • 0

Acontece que ele não está setando valor algum na variavel.

Como ela está nula ou vazia acaba entrando na codição "0", ou seja, "0" é equivalente a nulo...

Verifica a variavel para ver se ela está pegando o valor correspondente ao nível.

Link para o comentário
Compartilhar em outros sites

  • 0

Se quiser, eu tenho um autenticador mais pratico e fácil de entender:

<?php

include('conexao.php');

session_start ();

session_register('sslogado');

$user = $_POST['user'];

$pass = $_POST['pass'];

$sql = "SELECT * FROM user WHERE user = '$user' AND pass = '$pass'";

$resultado = mysql_query($sql,$conexao);

$linhas = mysql_num_rows($resultado);

if ($linhas > 0)

{

// Resgatando informações da tabela!

$cod_logado = mysql_result($resultado,0,'cod');

$nome_logado = mysql_result($resultado,0,'nome');

$email_logado = mysql_result($resultado,0,'email');

$nivel_logado = mysql_result($resultado,0,'nivel');

$_SESSION['sslogado'] = "S";

//Armazendando informações dentro de uma seção!

session_register('cod_logado');

$_SESSION['cod_logado'] = $cod_logado;

session_register('nome_logado');

$_SESSION['nome_logado'] = $nome_logado;

session_register('email_logado');

$_SESSION['email_logado'] = $email_logado;

session_register('nivel_logado');

$_SESSION['nivel_logado'] = $nivel_logado;

echo "<script>self.location = 'index.php'</script>";

}

else

{

$_SESSION['sslogado'] = "N";

echo "<script>self.location = 'logar.php'</script>";

}

?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...