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

(Resolvido) Erro na sessão no PHP


Anderson Ferreira

Pergunta

Estou montando uma 'Urna Online' para um projeto do meu curso técnico...

Então, o projeto deveria funcionar da seguinte maneira: primeiro o eleitor entra na página inicial do site que estou montando... Então ele escolheria no menu a opção 'Votação' quando ele quisesse votar. Após isto, apareceria uma página simples de validação, onde ele colocaria o seu 'login' e sua 'senha'... Se tudo estivesse correto, seria redirecionado pra outra página, onde seria feita uma validação mais rígida, onde seria deveria ser inserido todos os dados do eleitor, como por exemplo o nome completo, data de nascimento, titulo de eleitor, e etc. Se todos os dados estivessem correto, seria redirecionado para outra página, onde o eleitor escolheria o estado e a cidade, respectivamente, e então votaria para seu candidato preferido.

----------

Mas o problema é o seguinte:

Quando é colocado o login e a senha na página 'login.html', a página 'login.php' faz a verificação com o banco de dados, para ver se o login e senha estão corretos. Ao mesmo momento, o login e a senha, deveria ser salvo em uma sessão ( $login = $_SESSION["login"] / $senha = $_SESSION["senha"] ).

Com isso, é redirecionado para a página 'validacao.php' onde ele abre novamente a mesma sessão ( $login = $_SESSION["login"] / $senha = $_SESSION["senha"] ) que serve pra pegar todos os dados do eleitor no banco de dados.

Porém, na página 'validacao.php', ele não está conseguindo pegar os dados da sessão da página anterios (login.php)...

Está aparecendo o seguinte erro na página 'validacao.php', onde a linha 17 é onde está sendo aberta a sessão:



Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\xampp\htdocs\Urna_Online\votacao\validacao.php:1) in C:\Program Files\xampp\htdocs\Urna_Online\votacao\validacao.php on line 17

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\xampp\htdocs\Urna_Online\votacao\validacao.php:1) in C:\Program Files\xampp\htdocs\Urna_Online\votacao\validacao.php on line 17

É sobre isso que eu queria ajuda (porfavor)!

Segue abaixo o código-fonte das duas páginas: 'login.php' e 'validacao.php'.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

========

LOGIN.PHP

========

<?php include "../conexao.php"; ?>

<html>
    
    <head>
        <meta http-equiv="Content-Type" content="text/html" charset="utf-8" />  
        <title>Urna Online</title>
    </head>

    <body>
    
        <font face="Arial, Helvetica, sans-serif">
            
            <?php

                @session_start();
                
                    @$_SESSION["login"] = $_POST["val_login"];
                    @$_SESSION["senha"] = $_POST["val_senha"];

                #variaveis
                
                    $login = $_SESSION["login"];
                    $senha = $_SESSION["senha"];

                $conexao_tabela = ("SELECT * FROM eleitores WHERE login='$login' AND senha='$senha'");
                $RS = mysql_query($conexao_tabela) or die ("$erro3");

                if (mysql_num_rows($RS) > 0)
                {
                    echo "<meta http-equiv='Refresh' content='0;URL=validacao.php>";
                }

                else
                {
                    echo "$erro3";
                }

            ?>

        </font>
    
    </body>

</html>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ============ VALIDACAO.PHP ============
<?php include "../conexao.php"; ?>

<html>

<head>

    <meta http-equiv="content-type" content="text/html" charset="utf-8">
    <link rel="stylesheet" type="text/css" href="../css/estilo.css" />
    <title>Urna Online</title>

</head>

<body>

<?php

    session_start();
                
        $_SESSION["login"];
        $_SESSION["senha"];

    #variaveis
                
        $login = $_SESSION["login"];
        $senha = $_SESSION["senha"];


    $conexao_tabela = ("SELECT * FROM eleitores WHERE login='$login' AND senha='$senha'");
    $RS = mysql_query($conexao_tabela) or die ("$erro3");

    if (mysql_num_rows($RS) > 0)
                        
        {
        [color="#2E8B57"]echo " OK ";[/color]
        }
                            
        else
        
            {                            
            echo "$erro";
            }

?>


</body>

</html>

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

OBS.: A linha que está verde (echo " OK ";), é onde fica toda a parte HTML, do formulário onde deve ser inserido o nome completo, titulo de eleitor, data de nascimento, etc... Só apaguei, e troquei por o 'echo', pois é muito grande a parte em HTML, e acho que não é necessária.

Obrigado,

Anderson Ferreira

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

O que ele quis dizer é que qualquer informação de cabeçalho deve vir antes de uma saída para o navegador.

Por exemplo, você não pode colocar um session_start() depois de um echo, print, printf, sprintf, ou depois de já ter colocado alguma tag no HTML.

Informações de header devem vir antes de qualquer saída.

Link para o comentário
Compartilhar em outros sites

  • 0

Concertei o erro, do jeito que vocês me explicaram, ou seja, colocando a sessão antes de tudo...

Então, na página 'validacao.php', mandei a sessão lá pra cima, ou seja...

ANTIGAMENTE ERA ASSIM:

<?php include "../conexao.php"; ?>

<html>

<head>

    <meta http-equiv="content-type" content="text/html" charset="utf-8">
    <link rel="stylesheet" type="text/css" href="../css/estilo.css" />
    <title>Urna Online</title>

</head>

<body>

<?php

    session_start();
                
        $_SESSION["login"];
        $_SESSION["senha"];
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- AGORA ESTA ASSIM:
<?php

    include "../conexao.php";

    session_start();

        $_SESSION["login"];
        $_SESSION["senha"];
        
?>

<html>

<head>

    <meta http-equiv="content-type" content="text/html" charset="utf-8">
    <link rel="stylesheet" type="text/css" href="../css/estilo.css" />
        <title>Urna Online</title>

</head>

<body>

<?php

    #variaveis
                
        $login = $_SESSION["login"];
        $senha = $_SESSION["senha"];

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Ou seja, coloquei a sessão junto com o include, lá em cima.... MAS MESMO ASSIM CONTINUA COM ERRO :ninja: :unsure: :( :angry: <_< -_- :o :mellow: :huh: :blink:

Link para o comentário
Compartilhar em outros sites

  • 0

Arrumei, coloquei a sessão, no "início de tudo" !!!

Mas mesmo assim continua com erro... :blink:

Está aparecendo o seguinte erro:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\xampp\htdocs\Urna_Online\votacao\validacao.php:1) in C:\Program Files\xampp\htdocs\Urna_Online\votacao\validacao.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\xampp\htdocs\Urna_Online\votacao\validacao.php:1) in C:\Program Files\xampp\htdocs\Urna_Online\votacao\validacao.php on line 3



ERRO - 'Login' e/ou 'Senha' inválido(s)

----------------------------------------

Como podem ver acima, existem 2 erros, o vermelho e o verde:

Este erro da linha 3 (vermelho), é a respeito a esta linha: session_start();

Então, coloquei um '@' antes do session_start, então o erro sumiu (igual fiz na página anterior que tb tava dando erro)...

Então + ou - , por esta parte melhorou, menos um erro (mesmo que foi uma gambiarra) :D

----------------------------------------

Mas agora o problema é no erro de cor verde... Pois este erro, está relacionado ao IF do 'validacao.php'... No IF, se estivesse correto, ele imprimiria toda a página, se incorreto imprimiria este erro de cor verde...

Então quer dizer que o problema está no IF... Nesta parte: if (mysql_num_rows($RS) > 0)

Não entendo muito como funciona este comando do IF, mas aprendi com a galera aqui do fórum.

Então, se alguém poder me ajudar novamente, agradeceria muito! (Principalmente o Jhonatan, queria agradecer bastante, pois vem me ajudando muito em vários posts).

Caso necessitem, lá em cima, tem os códigos-fontes das páginas.

Link para o comentário
Compartilhar em outros sites

  • 0

Estava editando no Windows Seven com o Notepad++. Então tentei editar no Linux (Ubuntu) com o BlueFish. Por incrível que pareça, funcionou tudo perfeitamente! :D

Então acho que deve ser por causa da codificação de caracteres que o Notepad++ no Windows tava salvando (o que acho estranho é que configurei o Notepad++ para UTF-8 e coloquei a tag também como UTF-8, e mesmo assim estava dando erro :S)

----

Bom, oque importa é que está tudo perfeito (ou quase tudo).

No Linux, fiz tudo corretamente no BlueFish. Configurei a tag e o editor para UTF-8, e tem um nome no documento que ele esta imprimindo da seguinte maneira: VOTA��O, que deveria ser impresso de maneira correta como: VOTAÇÃO.

Podém me ajudar porfavor? :D

Editado por Anderson Ferreira
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
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...