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

Problemas com Login


razih

Pergunta

Bom dia pessoal da ScriptBrasil.

Estou com um problema para fazer login, antes de mais nada eu não sou nenhum especialista to aprendendo a mecher com php estudando livros e aulas por isso meu codigo deve ser meio "FEIO" com erros absurdos, então com ajuda da galera aqui pretendo adquir novos conhecimentos e melhorar meus codigos. Mas vamos ao que interessa, minha dúvida. Abaixo vou estar postando o código porque assim fica mais facil para vocês me ajudarem.

Breve descrição: Pagina Index eu verifico a Sessão se ela existe ou não, e se o post já foi enviado ou não.

<?php 

    session_start();
    
    include 'conexao.php';
    include 'funcoes.php';
    
    
    if(isset($_SESSION['login'])) #Verifico se existe a Sessão Login
    {
        require_once "logado.php";
    }
    else #Caso ela não existir eu chamo arquivo login novamente
    {
        require_once "login.php";
    }
?>
Como podem ver eu tenho outras duas páginas, uma com formulario de login caso o administrador não estiver logado e a pagina logado aonde mostra toda area administrativa. Abaixo mostro o formulario:
<?php
    session_start();
    include 'conexao.php';
?>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="css/global.css" rel="stylesheet" type="text/css" />
    <title><?php echo $configSite ?></title>
</head>

<body>
    <div id="site2">
        <h1 class="banner">Project A3 Web Manager </h1>
        <span>Página de Administração</span>
        
        <form name="login_administrador" action="logar.php" method="post" >
            <table id="tab_login">
                <tr>
                    <td align="right">Usuario .: </td>
                    <td>
                        <input id="username" name="username" size="52" type="text" value="" class="input" />
                    </td>
                </tr>
                
                <tr>
                    <td align="right">Senha .: </td>
                    <td>
                        <input id="password" name="password" size="52" type="password" value="" class="input" />
                    </td>
                </tr>
                
                <tr>
                    <td> </td>
                    <td align="right">
                        <input type="submit" name="logar_admin" Value="Fazer Login" id="botao_logar" />
                    </td>    
                </tr>        
            </table>    
        </form>
    </div>
</body>
O formulario faz toda a verificação em outra página que é a logar.php abaixo vou mostrar o código
<?php
    
    include 'conexao.php'; // abro conexão com banco de dados
    
    $nome_usuario     =    $_POST["username"]; // Pego Nome de Usuario no POST Formulario
    $senha_usuario    =    $_POST["password"]; // Pego Senha do Usuario no POST Formulario
    
    $sql         =    mysql_query("select senha from tb_pessoas where usuario = '$nome_usuario'"); // Busco no banco a senha caso exista o usuario
    $cont        =    mysql_num_rows($sql); // Verifico se ouve retorno
        
    while($valida = mysql_fetch_array($sql)) // Busco a senha do usuario caso o mesmo exista
    {
        $valida_senha = $valida['senha']; // Armazeno a senha em uma variavel
    }
    
    if(trim($nome_usuario) != '') // Verifico se não tem espaço ou esta em branco
    {
        if($cont == 0) // Se resultado for iqual a 0 então não tem nenhum usuario cadastrado
        {
            echo "
                <META HTTP-EQUIV=REFRESH CONTENT='0; URL=/admin/'>
                &lt;script type=\"text/javascript\">
                    alert(\"Este usuario não existe.\");
                </script>
                ";
        }
        else // caso contrario o usuario existe no banco
        {
            if($valida_senha != $senha_usuario) // Comparo a senha armazenada na variavel consultada no banco com a variavel que armazena o post do formulario
            {
                echo "
                <META HTTP-EQUIV=REFRESH CONTENT='0; URL=/admin/'>
                &lt;script type=\"text/javascript\">
                    alert(\"A senha não corresponde.\");
                </script>
                ";
            }
            else // se a senha for bater com nome de usuario então inicio a sessão
            {
                $_SESSION['login_usuario'] = $usuario;
                $_SESSION['senha_usuario'] = $senha;
                
                header('Location: /admin/');
            }
        }
    }
    else // se os campos estiverem vazio mensagem de erro
    {
        echo "
        <META HTTP-EQUIV=REFRESH CONTENT='0; URL=/admin/'>
        &lt;script type=\"text/javascript\">
            alert(\"Campos Login e Senha devem ser preenchidos.\");
        </script>
        ";
    }
    
?>

Ao final disso, depois que ele validar usuario e senha ele retorna para /admin/ então ele vai mostrar a página de administração.. ou pelo menos era para fazer isso né. o que ta acontecendo é seguinte. Se eu colocar usuario errado, ele mostra mensagem de erro, se eu colocar usuario certo e a senha errada ele mostra mensagem de q a senha esta errada, se eu colocar ususario e senha corretos ele não vai para pagina "logado.php" ele fica na pagina de "login.php" que é a página do formulario sempre.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Bom dia pessoal da ScriptBrasil.

Breve descrição: Pagina Index eu verifico a Sessão se ela existe ou não, e se o post já foi enviado ou não.

Ao final disso, depois que ele validar usuario e senha ele retorna para /admin/ então ele vai mostrar a página de administração.. ou pelo menos era para fazer isso né. o que ta acontecendo é seguinte. Se eu colocar usuario errado, ele mostra mensagem de erro, se eu colocar usuario certo e a senha errada ele mostra mensagem de q a senha esta errada, se eu colocar ususario e senha corretos ele não vai para pagina "logado.php" ele fica na pagina de "login.php" que é a página do formulario sempre.

O erro de fato está na definição da sua sessão, você está verificando se a sessão login existe, mas está definindo com outro nome:

Você verifica assim:

if(isset($_SESSION['login'])) #Verifico se existe a Sessão Login
E cria a sessão assim:
else // se a senha for bater com nome de usuario então inicio a sessão
            {
                $_SESSION['login_usuario'] = $usuario;
                $_SESSION['senha_usuario'] = $senha;
                
                header('Location: /admin/');
            }
Tenta criar sua sessão assim:
$_SESSION[ "login" ][ "usuario" ] = $usuario;
$_SESSION[ "login" ][ "senha" ] = $senha;

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,7k
×
×
  • Criar Novo...